美文网首页flutter
Flutter EventBus消息总站

Flutter EventBus消息总站

作者: 倪大头 | 来源:发表于2020-03-06 17:33 被阅读0次

    类似iOS里的通知,先在pubspec.yaml导入event_bus库:


    image.png

    创建一个EventBus.dart文件专门管理这个消息总站
    EventBus.dart

    import 'package:event_bus/event_bus.dart';
    
    EventBus eventBus = EventBus();
    
    // Event 刷新页面
    class RefreshEvent {
      RefreshEvent();
    }
    

    eventBus用来收发消息,RefreshEvent是响应事件

    发送消息:
    在需要发送消息的页面import刚才准备的EventBus.dart文件,
    调用代码:

    eventBus.fire(RefreshEvent());
    

    可以传值

    class RefreshEvent {
      String text;
      RefreshEvent(this.text);
    }
    

    接收消息:
    在需要接受消息的页面import刚才准备的EventBus.dart文件,
    创建一个 StreamSubscription subscription 用来管理eventBus,

    StreamSubscription subscription;
    
      @override
      void initState() {
        super.initState();
    
        // 消息总站监听
        subscription = eventBus.on<RefreshEvent>().listen((event) {
           print('RefreshEvent');
           loadData();
        });
    
        loadData();
      }
    
      @override
      void dispose() {
        super.dispose();
        // 销毁监听
        subscription.cancel();
      }
    

    用subscription来销毁监听
    subscription还可以开启和暂停eventBus:

    subscription.resume();  //  开启
    subscription.pause();  //暂停
    

    相关文章

      网友评论

        本文标题:Flutter EventBus消息总站

        本文链接:https://www.haomeiwen.com/subject/atlwrhtx.html