import 'dart:async'; //typedef EventHandler = void Function(T args); /*class _MapEntry { late dynamic owner; late dynamic handler; } class MessageService { static final MessageService _singleton = MessageService._internal(); final Map> _callbackMaps = >{}; factory MessageService() { return _singleton; } MessageService._internal(); subscribe(String topic, dynamic owner, EventHandler? handler) { var entry = _MapEntry(); entry.owner = owner; entry.handler = handler; if (_callbackMaps.containsKey(topic)) { _callbackMaps[topic]!.remove(entry); _callbackMaps[topic]!.add(entry); } else { _callbackMaps[topic] = <_MapEntry>{}; _callbackMaps[topic]!.add(entry); } } unsubscribe(String topic, dynamic owner) { if (_callbackMaps.containsKey(topic)) { for (var entry in _callbackMaps[topic]!) { if (entry.owner == owner) { _callbackMaps[topic]!.remove(entry); unsubscribe(topic, owner); break; } } } } unsubscribeAll(dynamic owner) { for (var callbackMapsEntry in _callbackMaps.entries) { for (var entry in callbackMapsEntry.value.toList()) { if (entry.owner == owner) { _callbackMaps[callbackMapsEntry.key]!.remove(entry); unsubscribeAll(owner); break; } } } } publish(String topic, {T? arguments}) async { Completer completer = Completer(); var entries = _callbackMaps[topic]; if (entries != null) { for (var entry in entries) { entry.handler(arguments); } completer.complete(); } await completer.future; } }*/