Flutter 通信技巧 event_bus

它是一个事件总线,也能被归类为是数据通信组件

正好别的资料说他适合用来做跨页面和跨组件的通信,刚好我碰到的问题是需要跨页面通信,把它找出来用了,发现确实还挺好用的。

添加依赖

dependencies:
 event_bus: ^2.0.0

创建事件类

这里为了好管理,单独创建了一个文件,这里我也给他起名叫做event_bus.dart

import 'package:event_bus/event_bus.dart';

EventBus eventBus = EventBus();

class UnitChangeEvent{
  String unit;
  UnitChangeEvent(this.unit);
}

然后这里做了一个单位变化事件,就是用来在设置页面切换单位之后,通知别的页面要跟着刷新。

发布消息

这里在设置单位变化的事件里加上这一条就行

eventBus.fire(UnitChangeEvent(unit));//unit 这里是字符串 

订阅消息

这里只针对这个事件接收

    eventBus.on<UnitChangeEvent>().listen((event){
      setState(() {
        print(event.unit);
        //do refresh
      });
    });

以上这些就是正在用的,确认可行。
另外还有我没有确认过的全部事件订阅和取消订阅,如下:

/// 监听所有方法
eventBus.on().listen((event) {
  print(event);
  //do something
});

/// 取消监听
StreamSubscription UnitSubscription = eventBus.on<UnitChangeEvent>().listen((event) {
  print(event.unit);
});
UnitSubscription.cancel();

感觉上,在触发刷新的时候,这个比回调啥的都要好写,就是看代码可能稍稍麻烦一些。

posted @   行走的泡泡鱼  阅读(293)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
点击右上角即可分享
微信分享提示