Flutter和Native 通信 android端-pigeon
文章目录
- 1. pigeon
- 2. 定义接口
- 3.定义sh文件 pigeon.sh(lib同级目录创建)
- 4. 运行sh文件 pigeon.sh 会生成一下文件
- 5. 配置
- 6. 使用
1. pigeon
Pigeon 是一个代码生成器工具,用于使 Flutter 和宿主平台之间的通信类型安全、更轻松、更快捷
pub地址
2. 定义接口
创建pigeons/message.dart(lib同级目录创建)
import 'package:pigeon/pigeon.dart';/// Description : 定义与原生通信--通过自动生成减少手写代码量
/// 请求参数和返回结果都必需是类结构 否则无法生成文件
/// - Flutter 调用 Native 方法 ( @HostApi() )
/// - Native 调用 Flutter 方法 ( @FlutterApi() )///Flutter 调用原生代码
@HostApi()
abstract class CalendarRemindApi {///设置日历提醒int addCalendarEvent(String title,String description,int startTime,int endTime,int minutes,String customAppUri);///判断是否设置过bool checkCalendarEvent(String title,String description,int startTime,int endTime);
}
3.定义sh文件 pigeon.sh(lib同级目录创建)
java_package 目录可以随便填写, 目录如果创建失败 就手动创建目录
flutter pub run pigeon \--input pigeons/message.dart \--dart_out lib/pigeon.dart \--objc_header_out ios/Runner/pigeon.h \--objc_source_out ios/Runner/pigeon.m \--experimental_swift_out ios/Runner/Pigeon.swift \--java_out ./android/app/src/main/java/io/flutter/plugins/Pigeon.java \--java_package "io.flutter.plugins"
4. 运行sh文件 pigeon.sh 会生成一下文件
android/app/src/main/java/io/flutter/plugins/Pigeon.java
ios/Runner/pigeon.h
5. 配置
class MainActivity: FlutterActivity() {inner class A : Pigeon.CalendarRemindApi{override fun addCalendarEvent(title: String,description: String,startTime: Long,endTime: Long,minutes: Long,customAppUri: String): Long {Log.e("MainActivity-addCalendarEvent","title=$title description=$description startTime=$startTime endTime=$endTime minutes=$minutes")return com.app.antnft.util.addCalendarEvent(this@MainActivity,title,description,startTime,endTime,minutes,customAppUri)}override fun checkCalendarEvent(title: String,description: String,startTime: Long,endTime: Long): Boolean {Log.e("MainActivity-checkCalendarEvent","title=$title description=$description startTime=$startTime endTime=$endTime")return com.app.antnft.util.checkCalendarEvent(this@MainActivity,title,description,startTime,endTime)}}override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)Pigeon.CalendarRemindApi.setup(flutterEngine?.dartExecutor?.binaryMessenger,A())}}
6. 使用
CalendarRemindApi().addCalendarEvent().then()
Flutter和Native 通信 android端-pigeon相关推荐
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 MethodChannel 通信 )
文章目录 前言 一.Android 端 MethodChannel 构造函数 二.Android 端 setMethodCallHandler 方法 三.Android 端实现 MethodChann ...
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 EventChannel 通信 )
文章目录 前言 一.Android 端 EventChannel 构造函数 二.Android 端 setStreamHandler 方法 三.Android 端实现 EventChannel 通信步 ...
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 BasicMessageChannel 通信 )
文章目录 前言 一.Android 端 BasicMessageChannel 构造函数 二.Android 端 MessageCodec 子类实现 三.Android 端 setMessageHan ...
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 完整代码示例 )
文章目录 前言 一.Android 端完整代码示例 二.Flutter 端完整代码示例 三.相关资源 前言 前置博客 : [Flutter]Flutter 混合开发 ( Flutter 与 Nativ ...
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 EventChannel 通信 )
文章目录 一.EventChannel 简介 二.EventChannel 在 Dart 端的实现 1.EventChannel 构造方法 2.创建广播流 Stream 3.设置监听回调函数 4.Ev ...
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 MethodChannel 通信 )
文章目录 一.MethodChannel 简介 二.MethodChannel 在 Dart 端的实现 1.MethodChannel 构造函数 2.invokeMethod 函数 3.MethodC ...
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 BasicMessageChannel 通信 )
文章目录 一.BasicMessageChannel 简介 二.BasicMessageChannel 在 Dart 端的实现 1.BasicMessageChannel 构造方法 2.使用 Basi ...
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 通信场景 | Channel 通信机制 | Channel 支持的通信数据类型 | Channel 类型 )
文章目录 一.Flutter 和 Native 应用之间的通信场景 二.Flutter 和 Native 的 Channel 通信机制 三.Channel 通信机制支持的数据类型 四.Channel ...
- Flutter 的渲染逻辑及和 Native 通信
本文首发于 RTC 开发者社区,作者刘斯龙, 5年的 Android 程序员,从事过 AR ,Unity3D,Weex,Cordova,Flutter 及小程序开发 作者 github: github ...
- Android方法调用实体类的值,React Native调用Android原生方法和传值
8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 创建react native 项目:react-native init callAndroidProject cd ca ...
最新文章
- 【剑指offer】丑数
- C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid
- 宁波大学计算机专业英语面试的形式,宁波大学信息学院计算机网络2014复试试题(回忆版)...
- 一定要树立真的猛的期刊,只需要发一篇的思路
- zcmu-1181(大数相加)
- Table options do not contain an option key ‘connector‘ for discovering a connector
- windows c语言目录操作函数,c语言目录操作在C/C++语言中如何进行目录操作,如得到目录内的 爱问知识人...
- sqlite主键会加速吗_股指分歧中创下3107新高,权重主动下蹲蓄势,后市会加速吗?...
- python中intersection用法_Python Set intersection() 方法
- C#-设置button颜色
- echarts echarts.js:440 Uncaught TypeError: Cannot read properties of null (reading ‘toFixed‘)
- 应用程序热补丁(二):自动生成热补丁
- 【数字识别】基于matlab离散Hopfield神经网络数字识别【含Matlab源码 226期】
- 【第五组】交互设计文档Hunger Killer
- Distributional RL with Quantile Regression论文翻译
- VIVADO中WNS,WHS,TNS,THS含义
- 9月编程排行榜新鲜出炉霸榜还得是它~
- Android——百度APIstore+Json——获取新闻频道+新闻数据
- CRT显示器和液晶显示器
- SDL已死,应用安全路在何方?
热门文章
- 尾行注释转行上注释 正则表达式
- PS2023和2022版本保姆级安装教程【博主亲测】
- `canvas`破苍穹
- alot英文怎么读_alot...of是什么意思
- Supervised Contrastive Learning
- 使用HTML+CSS+JS做一个音乐播放器
- postman——集合——执行集合——脚本的执行顺序——验证
- formatter格式说明
- linux捕获鼠标点击事件文件,Linux捕捉鼠标事件和键盘事件的方法
- Selenium结合HttpWatch进行Web自动化测试(实时获取页面性能)