目录
1、先创建一个EventBusUtils的单例类
import 'package:event_bus/event_bus.dart';
class EventBusUtils {
// 私有的静态实例
static EventBusUtils _singeton = EventBusUtils._internal();
// 内部的 EventBus 实例
static EventBus eventBus = EventBus();
// 私有构造函数
EventBusUtils._internal();
// 提供单例实例 factory确保EventBusUtils只被实例化一次
factory EventBusUtils() {
return _singeton;
}
}
///只需要调用方法
class RequestDetailOrder {
RequestDetailOrder();
}
///调用方法并传值
class SearchDeviceList {
String search;
SearchDeviceList(this.search);
}
2、调用
在发送通知的地方直接调用fire 后面是监听具体的某个类型
//传值
EventBusUtils.eventBus.fire(SearchDeviceList(searchText));
//只实现方法
EventBusUtils.eventBus.fire(RequestDetailOrder());
3、监听事件
在StatefulWidget 组件中
late StreamSubscription subscription;
@override
void initState() {
super.initState();
//接收通知
///有传值写法
subscription = EventBusUtils.eventBus.on<SearchDeviceList>().listen((event) {
searchText = event.search;
// 监听到searchText变化,进行逻辑操作
_refreshController.requestRefresh(
duration: const Duration(milliseconds: 100),
);
});
//无传值写法
subscription =
EventBusUtils.eventBus.on<RequestDetailOrder>().listen((event) {
getData();
});
}
// 注销监听
@override
void dispose() {
subscription.cancel();
super.dispose();
}