類似iOS里的通知,先在pubspec.yaml導(dǎo)入event_bus庫:

image.png
創(chuàng)建一個EventBus.dart文件專門管理這個消息總站
EventBus.dart
import 'package:event_bus/event_bus.dart';
EventBus eventBus = EventBus();
// Event 刷新頁面
class RefreshEvent {
RefreshEvent();
}
eventBus用來收發(fā)消息,RefreshEvent是響應(yīng)事件
發(fā)送消息:
在需要發(fā)送消息的頁面import剛才準(zhǔn)備的EventBus.dart文件,
調(diào)用代碼:
eventBus.fire(RefreshEvent());
可以傳值
class RefreshEvent {
String text;
RefreshEvent(this.text);
}
接收消息:
在需要接受消息的頁面import剛才準(zhǔn)備的EventBus.dart文件,
創(chuàng)建一個 StreamSubscription subscription 用來管理eventBus,
StreamSubscription subscription;
@override
void initState() {
super.initState();
// 消息總站監(jiān)聽
subscription = eventBus.on<RefreshEvent>().listen((event) {
print('RefreshEvent');
loadData();
});
loadData();
}
@override
void dispose() {
super.dispose();
// 銷毀監(jiān)聽
subscription.cancel();
}
用subscription來銷毀監(jiān)聽
subscription還可以開啟和暫停eventBus:
subscription.resume(); // 開啟
subscription.pause(); //暫停