美文网首页
flutter - native互相通信(主要为iOS端需要处理

flutter - native互相通信(主要为iOS端需要处理

作者: 我是卖报的小行家 | 来源:发表于2020-06-08 09:35 被阅读0次

    flutter提供了一套channel机制来使得flutter和native之间互相通信。应用的Flutter部分通过平台通道(platform channel)将消息发送到其应用程序的所在的宿主(iOS或Android)应用(原生应用)。宿主监听平台通道,并接收该消息。然后它会调用该平台的API,并将响应发送回客户端,即应用程序的Flutter部分。


    截屏2020-05-07 上午11.18.36.png

    channel通道分为三种
    1).BasicMessageChannel:它提供类似于BinaryMessages的基本消息传递服务,但可自定义消息编解码器,支持发送字符串或半结构化消息,持续通信。收到消息后可以回复此次消息。
    2).MethodChannel:它使用异步方法调用的方式进行平台通信,属于一次性通讯。
    3).EventChannel:它使用事件流的方式进行平台通信,持续通讯。

    接下来分两种情况
    1.原生页面跳转到flutter,flutter传值给原生,最后通过回调再给到flutter。
    原生端
    // 要与main.dart中一致
    NSString * channelName = @"XXXXXXXXXXX";
    self.methodChannel = [FlutterMethodChannel methodChannelWithName:channelName binaryMessenger:messenger];
    __weak typeof(self) weakSelf = self;
    [self.methodChannel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult _Nonnull result) {
    if ([call.method isEqualToString:@"AAA"])//A事件处理
    {
    [weakSelf setBuryingPoint:call result:result];
    }else if ([call.method isEqualToString:@"BBB"])//B事件处理
    {
    [weakSelf doAction:call result:result];
    }else {
    result(FlutterMethodNotImplemented);
    }
    }];

    相关文章

      网友评论

          本文标题:flutter - native互相通信(主要为iOS端需要处理

          本文链接:https://www.haomeiwen.com/subject/xgdightx.html