类似iOS里的通知,先在pubspec.yaml导入event_bus库:
image.png
创建一个EventBus.dart文件专门管理这个消息总站
EventBus.dart
import 'package:event_bus/event_bus.dart';
EventBus eventBus = EventBus();
// Event 刷新页面
class RefreshEvent {
RefreshEvent();
}
eventBus用来收发消息,RefreshEvent是响应事件
发送消息:
在需要发送消息的页面import刚才准备的EventBus.dart文件,
调用代码:
eventBus.fire(RefreshEvent());
可以传值
class RefreshEvent {
String text;
RefreshEvent(this.text);
}
接收消息:
在需要接受消息的页面import刚才准备的EventBus.dart文件,
创建一个 StreamSubscription subscription 用来管理eventBus,
StreamSubscription subscription;
@override
void initState() {
super.initState();
// 消息总站监听
subscription = eventBus.on<RefreshEvent>().listen((event) {
print('RefreshEvent');
loadData();
});
loadData();
}
@override
void dispose() {
super.dispose();
// 销毁监听
subscription.cancel();
}
用subscription来销毁监听
subscription还可以开启和暂停eventBus:
subscription.resume(); // 开启
subscription.pause(); //暂停
网友评论