1. 程式人生 > 其它 >MethodChannel、BasicMessageChannel 與EventChannel區別

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(訊息處理器)。