文章目录

  • 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相关推荐

  1. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 MethodChannel 通信 )

    文章目录 前言 一.Android 端 MethodChannel 构造函数 二.Android 端 setMethodCallHandler 方法 三.Android 端实现 MethodChann ...

  2. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 EventChannel 通信 )

    文章目录 前言 一.Android 端 EventChannel 构造函数 二.Android 端 setStreamHandler 方法 三.Android 端实现 EventChannel 通信步 ...

  3. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | Android 端实现 BasicMessageChannel 通信 )

    文章目录 前言 一.Android 端 BasicMessageChannel 构造函数 二.Android 端 MessageCodec 子类实现 三.Android 端 setMessageHan ...

  4. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 完整代码示例 )

    文章目录 前言 一.Android 端完整代码示例 二.Flutter 端完整代码示例 三.相关资源 前言 前置博客 : [Flutter]Flutter 混合开发 ( Flutter 与 Nativ ...

  5. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 EventChannel 通信 )

    文章目录 一.EventChannel 简介 二.EventChannel 在 Dart 端的实现 1.EventChannel 构造方法 2.创建广播流 Stream 3.设置监听回调函数 4.Ev ...

  6. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 MethodChannel 通信 )

    文章目录 一.MethodChannel 简介 二.MethodChannel 在 Dart 端的实现 1.MethodChannel 构造函数 2.invokeMethod 函数 3.MethodC ...

  7. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 BasicMessageChannel 通信 )

    文章目录 一.BasicMessageChannel 简介 二.BasicMessageChannel 在 Dart 端的实现 1.BasicMessageChannel 构造方法 2.使用 Basi ...

  8. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 通信场景 | Channel 通信机制 | Channel 支持的通信数据类型 | Channel 类型 )

    文章目录 一.Flutter 和 Native 应用之间的通信场景 二.Flutter 和 Native 的 Channel 通信机制 三.Channel 通信机制支持的数据类型 四.Channel ...

  9. Flutter 的渲染逻辑及和 Native 通信

    本文首发于 RTC 开发者社区,作者刘斯龙, 5年的 Android 程序员,从事过 AR ,Unity3D,Weex,Cordova,Flutter 及小程序开发 作者 github: github ...

  10. Android方法调用实体类的值,React Native调用Android原生方法和传值

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 创建react native 项目:react-native init callAndroidProject cd ca ...

最新文章

  1. 【剑指offer】丑数
  2. C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid
  3. 宁波大学计算机专业英语面试的形式,宁波大学信息学院计算机网络2014复试试题(回忆版)...
  4. 一定要树立真的猛的期刊,只需要发一篇的思路
  5. zcmu-1181(大数相加)
  6. Table options do not contain an option key ‘connector‘ for discovering a connector
  7. windows c语言目录操作函数,c语言目录操作在C/C++语言中如何进行目录操作,如得到目录内的 爱问知识人...
  8. sqlite主键会加速吗_股指分歧中创下3107新高,权重主动下蹲蓄势,后市会加速吗?...
  9. python中intersection用法_Python Set intersection() 方法
  10. C#-设置button颜色
  11. echarts echarts.js:440 Uncaught TypeError: Cannot read properties of null (reading ‘toFixed‘)
  12. 应用程序热补丁(二):自动生成热补丁
  13. 【数字识别】基于matlab离散Hopfield神经网络数字识别【含Matlab源码 226期】
  14. 【第五组】交互设计文档Hunger Killer
  15. Distributional RL with Quantile Regression论文翻译
  16. VIVADO中WNS,WHS,TNS,THS含义
  17. 9月编程排行榜新鲜出炉霸榜还得是它~
  18. Android——百度APIstore+Json——获取新闻频道+新闻数据
  19. CRT显示器和液晶显示器
  20. SDL已死,应用安全路在何方?

热门文章

  1. 尾行注释转行上注释 正则表达式
  2. PS2023和2022版本保姆级安装教程【博主亲测】
  3. `canvas`破苍穹
  4. alot英文怎么读_alot...of是什么意思
  5. Supervised Contrastive Learning
  6. 使用HTML+CSS+JS做一个音乐播放器
  7. postman——集合——执行集合——脚本的执行顺序——验证
  8. formatter格式说明
  9. linux捕获鼠标点击事件文件,Linux捕捉鼠标事件和键盘事件的方法
  10. Selenium结合HttpWatch进行Web自动化测试(实时获取页面性能)