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){
}