1234567891011121314151617181920212223 |
- class Event {
- final Map<String, List<Function>> _events = {};
- Event on(String key, Function handle) {
- final handles = _events[key] ??= [];
- if (!handles.contains(handle)) handles.add(handle);
- return this;
- }
- Event emit(String key, dynamic arg) {
- final handles = _events[key];
- handles?.forEach((it) => it(arg));
- return this;
- }
- Event off(String key, Function handle) {
- final handles = _events[key];
- if (handles == null) return this;
- handles.remove(handle);
- if (handles.isEmpty) _events.remove(key);
- return this;
- }
- }
|