Flutter EventBus消息总站

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

推荐阅读更多精彩内容