事件总线
太久没坚持学习,已经被俊给批评了,现在重操旧业。
在一个App中,我们经常需要一个类似广播的东西来在各个模块之间发布通知或者通知更新状态
这个就是事件总线,通常它实现了订阅者模式(包含发布者和订阅者),可以通过事件总线来触发事件和监听事件
下面实现一个简单的全局事件总线,我们使用单列模式(dart语言中,私有化可以使用”_”作名称前缀)来实现
Dart中实现单例模式的标准做法就是使用static变量+工厂构造函数的方式,这样就可以保证EventBus()始终返回都是同一个实例,读者应该理解并掌握这种方法
1 | //订阅者回调签名 |
使用示例:
页面A:
1 | //Page A |
页面B:
1 | //Page B |
说明:事件总线通常用于组件之间的状态共享,但关于组件之间的状态共享也有一些专门的包如:redux、mobx、Provider。
对于一些简单的应用,事件总线足以满足业务需求的,如果你决定使用状态管理包的话,一定要想清楚您的App是否真的需要使用它
防止“化简为繁”、过度设计。
- Title: 事件总线
- Author: 人间烟火/张佳伟版
- Created at: 2024-05-22 23:12:45
- Updated at: 2024-05-22 22:44:12
- Link: https://945912035.github.io/2024/05/22/2024-05-22/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments