如同前面介绍的,Flutter 定义了三种不同型别的Platform Channel 在platform_channel.dart
,让Flutter 在与Native 通讯中,能够依讯息的资料型别来分类传输,在 Flutter(包括 android 中也存在与之对应的)中存在三种型别的讯息,就是前面提过的 BasicMessageChannel
、MethodChanel
和 EventChannel
,每一种 Channel 的建购函式都至少需要两个引数,与之系结的讯息型别(讯息的 name)和编码方式(MessageCodec/MethodCodec)
BasicMessageChannel:用於双向的单次讯息传递,包括发送讯息、接收讯息两个功能。传送讯息使用 send
函式,返回值是 Future
Future<T?> send(T message) async {
return codec.decodeMessage(await binaryMessenger.send(name, codec.encodeMessage(message)));
}
BasicMessageChannel
主要功能如上,呼叫 binaryMessenger.send
,并在前後用BasicMessageChannel
对应的Codec MessageCodec
,对 message 进行编解码,且send
函式的引数与返回值是同一种型别
setMessageHandler
则是用於向 binaryMessenger 注册一个MessageHandler
来处理接收讯息
void setMessageHandler(Future<T> handler(T message)) {
if (handler == null) {
binaryMessenger.setMessageHandler(name, null);
} else {
binaryMessenger.setMessageHandler(name, (ByteData message) async {
return codec.encodeMessage(await handler(codec.decodeMessage(message)));
});
}
}
主要还是由MessageHandler
处理讯息,BasicMessageChannel
所做的只是在处理前後将 message 编解码
磁碟空间快满了 好多朋友胡乱将各种档案存储在 MacBook 里,但又没有定期整理资料的习惯。时间...
获得已上传图片资讯 修改自官网范例 import pyimgur CLIENT_ID = "...
今天练习到 Vue 里面的 methods(方法),过去使用纯 JS 监听事件触发後,就会透过函式来...
天亮了 昨晚是平安夜 关於迷雾森林故事 洛神降临 图片来源 她就是洛神啊 以前只听过爸妈说过 这还是...
在技术面上,我们常听到支撑跟压力,今晚来说明一下,支撑型态与压力型态 以光宝科2301来说 上升趋势...