一、安卓端代码
// 事件派发对象
static EventChannel.EventSink eventSink = null;
// 事件派发流
private EventChannel.StreamHandler streamHandler = new EventChannel.StreamHandler(){
@Override
public void onListen(Object arguments, EventChannel.EventSink events) {
eventSink = events;
}
@Override
public void onCancel(Object arguments) {
eventSink = null;
}
};
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) {
// 初始化事件
EventChannel eventChannel = new EventChannel(flutterPluginBinding.getBinaryMessenger(), "EventChannelPlugin");
eventChannel.setStreamHandler(streamHandler);
}
发消息直接调用
eventSink.success(message);
二、flutter 端代码
final EventChannel _eventChannelPlugin = EventChannel("EventChannelPlugin");
StreamSubscription? _streamSubscription;
//native端发送正常数据
void _onToDart(message) {
print('flutter收到监听消息==============${message}');
}
//当native出错时,发送的数据
void _onToDartError(error) {
print('error==============${error}');
}
//当native发送数据完成时调用的方法,每一次发送完成就会调用
void _onDone() {
print("消息传递完毕");
}
@override
onInit() {
super.onInit();
_streamSubscription = _eventChannelPlugin
.receiveBroadcastStream()
.listen(_onToDart, onError: _onToDartError, onDone: _onDone);
}
@override
void dispose() {
if (_streamSubscription != null) {
_streamSubscription?.cancel();
_streamSubscription = null;
}
super.dispose();
}