Files
DMZJ_F/lib/app/event_bus.dart
2026-03-07 17:24:59 +08:00

43 lines
1.1 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'dart:async';
import 'package:flutter_dmzj/app/log.dart';
/// 全局事件
class EventBus {
/// 点击了底部导航
static const String kBottomNavigationBarClicked =
"BottomNavigationBarClicked";
/// 更新了漫画记录
static const String kUpdatedComicHistory = "UpdateComicHistory";
/// 更新了小说记录
static const String kUpdatedNovelHistory = "UpdateNovelHistory";
static EventBus? _instance;
static EventBus get instance {
_instance ??= EventBus();
return _instance!;
}
final Map<String, StreamController> _streams = {};
/// 触发事件
void emit<T>(String name, T data) {
if (!_streams.containsKey(name)) {
_streams.addAll({name: StreamController.broadcast()});
}
Log.d("Emit Event$name\r\n$data");
_streams[name]!.add(data);
}
/// 监听事件
StreamSubscription<dynamic> listen(String name, Function(dynamic)? onData) {
if (!_streams.containsKey(name)) {
_streams.addAll({name: StreamController.broadcast()});
}
return _streams[name]!.stream.listen(onData);
}
}