// 定义事件类
class Event {
final String message;
Event(this.message);
}
// 事件总线类
class EventBus {
// 单例模式
factory EventBus() => _getInstance();
static EventBus get instance => _getInstance();
static EventBus? _instance;
EventBus._internal();
static EventBus _getInstance() {
if (_instance == null) {
_instance = EventBus._internal();
}
return _instance!;
}
// 保存事件监听器的列表
final List<Function(dynamic)> _listeners = [];
// 注册事件监听器
void on<T>(Function(T) listener) {
_listeners.add(listener as Function(dynamic));
}
// 发布事件
void fire(dynamic event) {
for (var listener in _listeners) {
listener(event);
}
}
// 销毁事件总线,清空监听器
void destroy() {
_listeners.clear();
}
}
void main() {
// 创建事件总线实例
var eventBus = EventBus.instance;
// 注册监听器
eventBus.on<Event>((event) {
print("Received event: ${event.message}");
});
// 发布事件
eventBus.fire(Event("Hello, Event!"));
// 在需要的地方,可以注册更多监听器
eventBus.on<int>((event) {
print("Received integer event: $event");
});
// 发布其他类型的事件
eventBus.fire(42);
}