【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 通信场景 | Channel 通信机制 | Channel 支持的通信数据类型 | Channel 类型 )
文章目录
- 一、Flutter 和 Native 应用之间的通信场景
- 二、Flutter 和 Native 的 Channel 通信机制
- 三、Channel 通信机制支持的数据类型
- 四、Channel 类型
- 五、相关资源
一、Flutter 和 Native 应用之间的通信场景
Flutter 和 Native 应用 之间的通信场景 :
① Native →\rightarrow→ Flutter ( 初始化 ) : Native 模块中向 Flutter 模块传递 初始化数据 initParams ; 如 : 在 Activity 中迁入 FlutterFragment , 可以传 initParams 初始化数据 ;
② Native →\rightarrow→ Flutter ( 运行中 ) : Native 模块在运行中 , 主动向 Flutter 模块传递数据 ; 如 : 收集了一些传感器数据 , 实时传递给 Flutter 模块 ;
③ Flutter →\rightarrow→ Native : Flutter 模块 向 Native 模块传递数据 ;
④ Flutter ↔\leftrightarrow↔ Native : Flutter 模块 与 Native 模块 双向传递数据 ;
这里的 Native 应用指的是 Android 或 iOS 的原生应用 ;
二、Flutter 和 Native 的 Channel 通信机制
Flutter 和 Native 之间的通信 , 需要通过 Channel 完成 ;
如下图所示 , Flutter 中的消息 , 通过 平台通道 Channel 发送给 Android 中的 Activity , 然后在 Native 模块中再进行具体的分发 ;
三、Channel 通信机制支持的数据类型
Flutter 和 Native 的 Channel 通信所支持的数据类型 :
四、Channel 类型
Flutter 中有 333 种不同类型的 Channel 平台通道 :
① BasicMessageChannel : 传递 字符串 / 半结构化 信息 ; 该类型 Channel 可进行持续通信 ;
② MethodChannel : 跨 Native / Flutter 平台调用对方的方法 ; 该类型 Channel 只能进行一次通信 ;
③ EventChannel : 数据流通信 ; 数据流是 EventStreams ; 该类型 Channel 可进行持续通信 ;
BasicMessageChannel 和 EventChannel 都可以持续通信 , 但是 BasicMessageChannel 发送消息后 , 还可以接受对方回复的消息 , EventChannel 只能向对方发送消息 , 不能接受对方反馈消息 ;
五、相关资源
参考资料 :
- Flutter 官网 : https://flutter.dev/
- Flutter 插件下载地址 : https://pub.dev/packages
- Flutter 开发文档 : https://flutter.cn/docs ( 强烈推荐 )
- 官方 GitHub 地址 : https://github.com/flutter
- Flutter 中文社区 : https://flutter.cn/
- Flutter 实用教程 : https://flutter.cn/docs/cookbook
- Flutter CodeLab : https://codelabs.flutter-io.cn/
- Dart 中文文档 : https://dart.cn/
- Dart 开发者官网 : https://api.dart.dev/
- Flutter 中文网 : https://flutterchina.club/ , http://flutter.axuer.com/docs/
- Flutter 相关问题 : https://flutterchina.club/faq/ ( 入门阶段推荐看一遍 )
- GitHub 上的 Flutter 开源示例 : https://download.csdn.net/download/han1202012/15989510
- Flutter 实战电子书 : https://book.flutterchina.club/chapter1/
- Dart 语言练习网站 : https://dartpad.dartlang.org/
重要的专题 :
- Flutter 动画参考文档 : https://flutterchina.club/animations/
博客源码下载 :
GitHub 地址 : ( 随博客进度一直更新 , 有可能没有本博客的源码 )
- Flutter Module 工程 : https://github.com/han1202012/flutter_module
- Android 应用 : https://github.com/han1202012/flutter_native
- 注意 : 上面两个工程要放在同一个目录中 , 否则编译不通过 ;
博客源码快照 : https://download.csdn.net/download/han1202012/21670919 ( 本篇博客的源码快照 , 可以找到本博客的源码 )
【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 通信场景 | Channel 通信机制 | Channel 支持的通信数据类型 | Channel 类型 )相关推荐
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 完整代码示例 )
文章目录 前言 一.Android 端完整代码示例 二.Flutter 端完整代码示例 三.相关资源 前言 前置博客 : [Flutter]Flutter 混合开发 ( Flutter 与 Nativ ...
- 【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 通信 | 在 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 ...
- 干货 | 携程APP Native/RN内嵌Flutter UI混合开发实践和探索
作者简介 Deway,携程资深工程师,iOS客户端开发,热衷于大前端和动态化技术: Frank,携程高级工程师,关注移动端热门技术,安卓客户端开发. 前言 随着各种多端技术的蓬勃发展,如今的移动端和前 ...
- 如何用 Flutter 实现混合开发?闲鱼公开源代码实例
2019独角兽企业重金招聘Python工程师标准>>> 具有一定规模的 App 通常有一套成熟通用的基础库,尤其是阿里系 App,一般需要依赖很多体系内的基础库.那么使用 Flutt ...
最新文章
- getHibernateTemplate()的用法 (转)
- c#一种存储结构解决动态平衡问题
- 定义交货输出确定过程(Output Determination Procedure)
- 使用 Kafka 和 Spark Streaming 构建实时数据处理系统
- Nosql数据库的四大分类
- Shell多线程操作及线程数控制实例
- 百老汇原版音乐剧《摇滚学校》2月开启中国巡演
- Git Flow分支策略与Azure DevOps相关功能简介
- Windows 下有哪些逆天的软件?
- html导航栏文字怎么平均,对齐HTML/CSS导航栏中的文本?
- 匿名内部类 java 1614965228
- 20220219:力扣第72场双周赛题解
- alexnet论文_【SOT】Siamese RPN++ 论文和代码解析
- MATLAB学习之均值滤波
- Paypal支付跳转失败的原因及解决办法
- BIDS 怪异现象(转载)
- 关于员工的选用任留,我们谈谈留人
- Nexus私服(三)
- win10浏览器正常访问,但无法进行下载(解决方法)
- 大数据可视化——dataV,Echarts,蚂蚁金服L7世界地图引入,数字翻牌器,全屏,自定义排名轮播表
热门文章
- sharepoint 2010 显示和隐藏Ribbon区域条
- Intent进阶 和 Intent-filter 学习笔记
- [转]什么是CMMI?
- [转帖]爬过这 6 个坡,你就能对 Linux 操作系统了如指掌
- win10 + GTX1080配置TensorFlow GPU开发环境
- bzoj 3875: [Ahoi2014Jsoi2014]骑士游戏【dp+spfa】
- 使用JMeter录制手机App脚本
- Ganglia 调试技巧
- Bootstrap—基础样式定义
- ASP.NET MVC 3.0学习系列文章—Model in ASP.NET MVC 3.0