MethodChannel、BasicMessageChannel 與EventChannel區別
阿新 • • 發佈:2022-05-18
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(訊息處理器)。