-
MethodChannel:用于传递方法调用,一次性通信。通常用于Dart调用Native的方法。
-
EventChannel:用于数据流的通信,持续通信,收到消息后无法回复此次消息。通常用于Native向Dart的通信。
下面我们就来看看这三种Channel通信方式的具体使用和介绍。
======================================================================================
Android端的相关方法:
BasicMessageChannel(BinaryMessenger messenger, String name, MessageCodec codec)
-
messenger参数是消息信使(FlutterView),是消息发送和接受的工具。
-
name参数是channel的名字也是其唯一标识,要和Dart端统一。
-
codec是消息编解码器,也需要和Dart端统一。它的作用就是将消息在发送的时候进行加密,dart端收到消息后在进行解密,传递的都是二进制数据。它有四种类型:BinaryCodec、StringCodec、JSONMessageCodec、StandardMessageCodec,四种类型均属于MessageCodec范畴。如不指定默认是StandardMessageCodec。
当我们需要接受来自Dart端发送的消息时使用setMessageHandler方法:
void setMessageHandler(BasicMessageChannel.MessageHandler handler)
参数handler是消息处理器,配合BinaryMessenger来完成对消息的处理。它是一个接口,具体的实现在onMessage方法中:
public interface MessageHandler {
void onMessage(T message, BasicMessageChannel.Reply reply);
}
参数message即为Dart发送的数据, reply是用于回复消息的回调函数,提供reply.reply(“”)设置回复的内容。
上面讲的是接受Dart端的消息,那么Native端主动发送消息则是使用send方法,它有两个重载方法:
void send(T message)
void send(T message, BasicMessageChannel.Reply callback)
参数message即为要发生给Dart的数据,callback回调则是用于接收Dart端收到消息后的回复信息。
Dart端相关方法:
const B