This commit is contained in:
sion
2026-04-04 21:19:57 +08:00
parent 37290e7846
commit 5b9a80e3fe
14 changed files with 659 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
import 'dart:async';
/// 应用事件类型
enum AppEventType {
/// 资产变动(余额、持仓等)
assetChanged,
/// 订单变动(充提订单状态变化)
orderChanged,
}
/// 应用事件
class AppEvent {
final AppEventType type;
final Map<String, dynamic>? data;
const AppEvent(this.type, {this.data});
}
/// 轻量级应用内事件总线
/// 基于 StreamController.broadcast零外部依赖
class AppEventBus {
final StreamController<AppEvent> _controller =
StreamController<AppEvent>.broadcast();
/// 广播事件
void fire(AppEventType type, {Map<String, dynamic>? data}) {
if (!_controller.isClosed) {
_controller.add(AppEvent(type, data: data));
}
}
/// 监听指定类型事件
StreamSubscription<AppEvent> on(
AppEventType type,
void Function(AppEvent) callback,
) {
return _controller.stream
.where((event) => event.type == type)
.listen(callback);
}
/// 监听任意事件
Stream<AppEvent> get stream => _controller.stream;
/// 销毁
void dispose() {
_controller.close();
}
}