基于 RxDart 的事件总线。
在 pubspec.yaml 添加依赖
dependencies:
rx_event_bus: <last_version>
因为 Dart 支持顶级函数, 所以可以直接定义
EventBus eventBus = EventBus();然后定义通讯数据
class OnAppState {
int state;
const OnAppState(this.state);
}eventBus.on<OnAppState>().listen((event) {
print('event: ${event.state}');
});eventBus.fire(OnAppState('paused'));当👆上面的基础用法的发送事件通知在注册接收器前出发, 则消息会丢失, 如果需要得到消息, 则可使用粘性广播.
eventBus.onSticky<OnAppState>().listen((event) {
print('event: ${event.state}');
});设置 sticky 为 true 则可发送粘性广播.
eventBus.fire(OnAppState('paused'), sticky: true);注意: 粘性广播默认只会保留上一次的数据, 如需要自定义条数, 可使用如下方式:
EventBus eventBus = EventBus(maxSize: 10);- maxSize: 粘性广播最大的留存条数
Refer to the Changelog to get all release notes.