flutter 安卓原生插件EventChannel 通信

一、安卓端代码

// 事件派发对象 
  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();
  }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容