美文网首页
Flutter 是如何与原生Android、iOS进行通信的?

Flutter 是如何与原生Android、iOS进行通信的?

作者: peterXpq | 来源:发表于2020-11-27 15:07 被阅读0次

理解Platform Channel
通信工具是 BinaryMessage,原生处理消息的时候,是需要通过注册的Handler 处理,能达到互通消息的功能;
分为3种:
1、BasicMessageChannel:用于传递字符串 和 半结构化的信息(如大内存数据块传递的情况下使用)
2、MethodChannel:用于传递方法的调用;
3、EventChannel:用于数据流的通信
代码展示:

Flutte 端:
static const hdwalletChannel = const MethodChannel("Channel名");
// 调用方法
createWallet(coin) async {
   final Map params = <String, dynamic> {
        'mnemonic': randomMnemonic,
        'coin': coin,
    };
  String res = await hdwalletChannel.invokeMethod("方法名", params);
// 接收 Native 端发送回来的消息
  return res;
}


 Android端:
 MethodChannel(flutterEngine.dartExecutor, "Channel名").setMethodCallHandler { call, result ->
        // 在这个回调里处理从Flutter来的调用
        if (call.method.equals("方法名")) {
         // 解析Flutter 传过来的参数
            var mnemonic = call.argument<String>("mnemonic");
            var coin = call.argument<String>("coin");
        // 做相应的操作
            var address = getWalletAddress(mnemonic, coin);
        // 然后再将消息回传到Flutter 端
            result.success(address);
        } else {
            result.error("UNAVAILABLE", "get address not available.", null);
        }
    }

总结:虽然这三种Channel 用法不同,但都有一个共同点,就是以 BinaryMessage 作为通信工具,以二进制流传递,序列化和反序列化,在Native 端 设置对应的Handler 拿到Flutter 发送来的数据,并回传到Flutter;

相关文章

网友评论

      本文标题:Flutter 是如何与原生Android、iOS进行通信的?

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