Flutter插件开发(六):总结
Flutter与Native的通信,有3个不同类型的Channel,它们分别是:
1.MethodChannel
通常用于调用Native中的某个方法;
2.EventChannel
用于数据流(event streams)的通信。有监听功能,比较经典的例子,如电量变化之后直接推送数据给flutter端;
3.BasicMessageChannel
用于传递字符串和半结构化的信息,这个用的比较少.
下面通过一张表格对上述的3种通道类型,做一个直观的比较:
通道名称 | 使用场景 | 交互方向 | BinaryMessenger(消息信使) | Codec(编解码器) | Handler(消息处理器) |
---|---|---|---|---|---|
MethodChannel | 用于调用Native中的某个方法 | native⇌flutter | BinaryMessenger | MethodCodec | MethodCallHandler |
EventChannel | 用于数据流的通信 | native→flutter | BinaryMessenger | MethodCodec | StreamHandler |
BasicMessageChannel | 用于传递字符串和半结构化的信息 | native⇌flutter | BinaryMessenger | MessageCodec | MessageHandler |
补充:
1.Flutter定义了2种编解码器:MethodCodec和MessageCodec.其中:
MethodCodec有2种实现,分别是: JSONMethodCodec和StandardMethodCodec.
MessageCodec有4种实现,分别是:JSONMethodCodec,StandardMethodCodec, BinaryCodec和StringCodec.
最后附上demo链接:https://github.com/shijia2118/flutter_platform_channel