24 lines
468 B
Dart
24 lines
468 B
Dart
import 'dart:async';
|
|
|
|
class EventBus {
|
|
static final EventBus _instance = EventBus._internal();
|
|
factory EventBus() => _instance;
|
|
EventBus._internal();
|
|
|
|
final _controller = StreamController.broadcast();
|
|
|
|
// 发出任意事件
|
|
void emit(event) {
|
|
_controller.add(event);
|
|
}
|
|
|
|
// 监听指定类型的事件
|
|
Stream<T> on<T>() {
|
|
return _controller.stream.where((event) => event is T).cast<T>();
|
|
}
|
|
|
|
void dispose() {
|
|
_controller.close();
|
|
}
|
|
}
|