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 listen(void onData(T event),
    {Function onError, void onDone(), bool cancelOnError});

4. android 调用发送数据 flutter 接受 

 发送  eventSink.success(Object object ) 

 接受  onEvent(Object event){

  }

 

你可能感兴趣的:(flutter,android,flutter)