import 'dart:async'; import 'package:cashier_reserve/common/channel/model/call_log_model.dart'; import 'package:cashier_reserve/common/channel/model/call_status_change_model.dart'; import 'package:event_bus/event_bus.dart'; class EventManager { static EventBus? _eventBus; static final Map> _eventMap = {}; static EventBus? get eventBus => getEventBus(); static EventBus? getEventBus() { _eventBus ??= EventBus(); return _eventBus; } static void postEvent(MyEvent event) { getEventBus()!.fire(event); } static void addListener(dynamic widget, void Function(T event) onData) { StreamSubscription event = EventManager.eventBus!.on().listen((T e) { onData(e); }); List? list = _eventMap[widget]; list ??= []; list.add(event); _eventMap[widget] = list; } static void cancelListener(dynamic widget) { List? list = _eventMap[widget]; if (list == null) { return; } for (var event in list) { event.cancel(); } } } class MyEvent { String name = ''; } class GetCallLogEvent extends MyEvent { List callLogs; bool isLoadMore = false; bool isSuccess = false; GetCallLogEvent({this.callLogs = const [], this.isLoadMore = false, this.isSuccess = false}); } class CallStatusChangeEvent extends MyEvent { /// state = IncomingNumberReceived 来电接听 /// state = OutGoing 呼出 /// state = End 通话结束 /// state = Incoming 来电 CallStatusChangeModel model; CallStatusChangeEvent({required this.model}); } class CallReceivedEvent extends MyEvent { CallReceivedEvent(); }