手写flutter版本的eventbus

// 定义事件类
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);
}