JHHK

欢迎来到我的个人网站
行者常至 为者常成

13 flutter channel

目录

channel的创建

channel的创建需要两个参数
name:channel的唯一标识
binaryMessenger:消息信使,用于消息的接收和发送,可以传入FlutterViewController的实例

+ (instancetype)methodChannelWithName:(NSString*)name
                      binaryMessenger:(NSObject<FlutterBinaryMessenger>*)messenger;

调用到内部还有一个参数:codec

channel回调的实现

self.flutterInitChannel = [FlutterMethodChannel methodChannelWithName:@"syncData" binaryMessenger:self.engine.binaryMessenger];
[self.flutterInitChannel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult  _Nonnull result) {
    __strong typeof(self) strongSelf = weakSelf;
    [[FZFlutterChannelManager sharedInstance] dispatchChannel:call result:result context:strongSelf];
}];

调用过程如下:




本质是:
name做为key,handler被包裹一层后做为value,存储在一个map里边。
后续可以根据key获取到handler。

channel的codec

一、两种编解码器
FlutterMessageCodec
二进制和oc对象的编解码

FlutterMethodCodec
Methodcodec
Call和二进制的编解码

二、解码器的核心是读和写




跨平台的数据都要变成二进制
写的时候先写标志位再写数据

读的时候先读标志位在读数据


行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.