一张图理解Flutter中Dart与原生环境通信

本文通过一张图深入解析Flutter中Dart与原生环境的通信机制,涉及编码解码、返回值回调、不同应用场景如BasicMessageChannel、EventChannel和MethodChannel的使用。Flutter利用C++作为桥梁,通过不同的编解码策略实现在Java和Dart之间的数据传递,支持异步消息传递和事件流通信。
摘要由CSDN通过智能技术生成

一张图理解Flutter中Dart与原生环境通信

Flutter中提供了Dart与原生环境通信的机制Platform Channels。通过该机制可以扩展Flutter,实现调用原生系统Api的能力。官方介绍图如下:

那么Flutter是怎么实现这套机制的?在设计这套机制时有哪些值得关注的重点?
这里以Android为例,以一张图解释整个通信流程。
废话不多说,先上图:

其中Java与Dart两个语言环境通过C++层做消息中转。Java与C++通信的技术叫做JNI,Dart与C++的通信与JNI类似,可以叫做NativeBinding。

在设计整个机制时,需要注意一下几点。

编码与解码

由于不同语言中的数据类型是不同的,所以在数据传递过程中,需要将其转换成大家都能理解的数据类型。Flutter中支持的数据类型对应关系如下:

Dart Android iOS
null null nil (NSNull when nested)
bool java.lang.Boolean NSNumber numberWithBool:
int java.lang.Integer NSNumber numberWithInt:
int, if 32 bits not enough java.lang.Long NSNumber numberWithLong:
double java.lang.Double NSNumber numberWithDouble:
String java.lang.String NSString
Uint8List byte[] FlutterStandardTypedData typedDataWithBytes:
Int32List int[] FlutterStandardTypedData typedDataWithInt32:
Int64List long[] FlutterStandardTypedData typedDataWithInt64:
Float64List double[] FlutterStandardTypedData typedDataWit
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值