github:
https://github.com/marcojakob/dart-event-bus
demo:
https://github.com/anymyna/flutter-examples
效果:
步骤:
1、 初始化
dependencies:
event_bus: ^1.1.1
2、 用法
import 'package:event_bus/event_bus.dart';
3、创建EventBus
定义了ThemeColorEvent通知修改主题颜色的事件
/// The global [EventBus] object.
EventBus eventBus = EventBus();
/// Event 修改主题色
class ThemeColorEvent {
String colorStr;
ThemeColorEvent(this.colorStr);
}
4、注册事件监听器
在main.dart程序入口类中,注册了监听修改主题颜色的监听器,用于接收一个颜色值,然后setState更新主题状态。
//订阅eventbus
_colorSubscription = eventBus.on<ThemeColorEvent>().listen((event) {
Color color = AppColors.getColor(event.colorStr);
setState(() {
_primaryColor = color;
});
5、发送事件
页面中有个输入框,用于输入颜色值的,然后点击按钮,就会带上输入框的颜色值,执行EventBus发送修改主题颜色的事件:
//发送订阅消息去修改颜色
eventBus.fire(ThemeColorEvent(_colorController.text));
参考:
Flutter EventBus消息总线