MethodChannel、BasicMessageChannel 与EventChannel区别


MethodChannel : 方法通道,Flutter与原生方法相互调用,用于方法调用。常用的api。

BasicMessageChannel : 消息通道,Flutter与原生相互发送消息,用于数据传递。

EventChannel : 事件通道,只能原生发送消息,Flutter接收,用于数据流通信。一对多通知,类似于原生广播。不常用的api。

三种Channel之间互相独立,各有用途,但它们在设计上却非常相近。每种Channel均有三个重要成员变量:

name: String类型,代表Channel的名字,也是其唯一标识符。

messager:BinaryMessenger类型,代表消息信使,是消息的发送与接收的工具。

codec: MessageCodec类型或MethodCodec类型,代表消息的编解码器。

例:MethodChannel(BinaryMessenger messenger, String name, MethodCodec codec)

注:一个Flutter应用中可能存在多个Channel,每个Channel在创建时必须指定一个独一无二的name,Channel之间使用name来区分彼此。当有消息从Flutter端发送

到Platform端时,会根据其传递过来的channel name找到该Channel对应的Handler(消息处理器)。