flutter的事件总线event_bus怎么使用

本文介绍了如何在Flutter应用中使用事件总线(EventBus)进行组件间通信。通过创建全局EventBus实例,定义事件类(ShopCartNumEvent),并在购物车页面订阅事件,实现在添加商品后更新购物车图标显示的数量。虽然示例中提到的场景可能更适合使用共享状态管理,但文章展示了事件总线的基本工作原理和使用流程。
摘要由CSDN通过智能技术生成

在《flutter实战》一书中的第八章的第三节介绍了关于事件总线,但是并没有详细介绍怎么使用。如果大家想买这本书的话可以点击这个链接或者是扫描二维码:
https://mall.csdn.net/item/56490
在这里插入图片描述
虽然没有详细给出使用的示例,可还是写了它的相关原理。
在看它书中介绍这个事件总线,总的来说使用了一种观察者设计模式,就是把要观察的对象放入总线当中,使用到这个观察的地方添加一个了监听,然后在别的地方更改观察者并触发监听动作。大致就是一个这么一个原理。然后最主要的是要把eventBus的创建放在一个全局变量。下面就是我根据这本书讲解以及书上的例子写出来的使用示例,我写的是一个添加购物车后下面的购物车图标出现购物车中物品种类数量,例子有点bug,但是不影响对总线的理解。开始写的时候没有注意到是种类数量不适合用总线来更改状态,我感觉更适合共享状态来处理添加购物车种类数量,我写成了添加了几个商品就在购物车图标显示几个。
在这里插入图片描述
使用了一个事件总线的包:

event_bus 2.0.0

创建全局变量

class Global{
    static EventBus eventBus = EventBus();
}

创建一个事件

class ShopCartNumEvent{
  int cartNum;
  ShopCartNumEvent(this.cartNum);
}

在购物车页面注册并订阅这个事件

void initState() {
    // TODO: implement initState
    super.initState();
    _tabController = TabController(length: tabs.length, vsync: this);
    Global.eventBus.on<ShopCartNumEvent>().listen((event) {
      cartNum = event.cartNum;
      setState(() {});
    });
  }

在发布方添加事件并强制更新

Global.eventBus.fire(ShopCartNumEvent(_num));

自此已经事件总线使用过程已经完了。如果不明白的地方可以留言,一块交流一下,我也是刚刚学习flutter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枣泥馅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值