理解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;
网友评论