Andorid調用Flutter記錄

1.第一步註冊

  可以在 實現FlutterPlugin接口在onAttachedToEngine 或者是 registerWith 方法內實現初始化

final EventChannel eventChannel =
        new EventChannel(registrar.messenger(), "flutter_plugin_name");
eventChannel.setStreamHandler(new ImFlutterPlugin(registrar.activity()));

 注意這裏的flutter_plugin_name 不要和你MethodChannel 名字一樣,否則使用時會出現交互覆蓋。

原因是會被覆蓋,具體源碼可以去看,這裏就不粘貼出來了。

new MethodChannel(registrar.messenger(), "不一樣的名字")

 

2. 第二步實現監聽

private static EventChannel.EventSink eventSink;

eventSink.success(object) //傳遞給flutter的數據

@Overrid
public void onListen(Object arguments, EventChannel.EventSink events) {
   eventSink = events;
}
@Override
public void onCancel(Object arguments) {
  eventSink = null;
}

3.flutter 中的實現 

static const myEventPlugin = const EventChannel('im_flutter_plugin_event'); // 可以放在插件的dart文件中

// 在ininstate 中初始化

myEventPlugin.receiveBroadcastStream().listen(_onEvent,onError: _onError);

// 方法可自定義

void _onEvent(Object event) {
  print("nEvent: $event");
}
void _onError(Object error){
  print("error : $error");
}

 // 上listen 簡單講解  ondata 返回的數據 onError android 或者是ios 拋出的異常 

onDone 事件完成 == null 時事件正常   cancelOnerror  true 事件中途被取消或者發生意外。

StreamSubscription<T> listen(void onData(T event),
    {Function onError, void onDone(), bool cancelOnError});

4. android 調用發送數據 flutter 接受 

 發送  eventSink.success(Object object ) 

 接受  onEvent(Object event){

  }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章