依赖
event_bus: ^1.1.0
eventBus使用流程
- 引入
import 'package:event_bus/event_bus.dart';
- 创建实例
EventBus eventBus = new EventBus();
- 定义event
- 注册监听
- 监听特定的event
eventBus.on<UserLoggedInEvent>().listen((event) {
print(event.user);
});
- 监听所有的event
eventBus.on().listen((event) {
print(event. runtimeType);
});
- 发送一个event
eventBus.fire(new UserLoggedInEvent(myUser));
案例: Flutter eventBus 使用修改切换AppBottomNavigationBar
1.编写 event.dart
import 'package:flutter/material.dart';
import 'package:event_bus/event_bus.dart';
EventBus eventBus = EventBus();
///App TabBar切换
class AppTabChange {
int pageIndex;
AppTabChange({this.pageIndex,});
}
2.路由监听
/// 路由监听
eventBus.on<AppTabChange>().listen((event) {
setState(() {
_currentIndex = event.pageIndex;
setState(() {});
_pageController.jumpToPage(event.pageIndex);
});
});
3.使用
eventBus.fire(AppTabChange(pageIndex: 1));
报错补充
1.页面为初始化时,event事件监听不生效
解决办法:
`在initState 里面重写,第一次会走initState.`
网友评论