dispatch method
Dispatch an event and call the listeners.
Implementation
@override
Future<void> dispatch(Event event) async {
// 1. Handle Broadcasting
if (event is ShouldBroadcast) {
await _broadcastEvent(event as ShouldBroadcast);
}
// 2. Handle Listeners
final eventType = event.runtimeType;
final listeners = _listeners[eventType] ?? [];
for (final listenerDefinition in listeners) {
if (event is StoppableEvent && event.isPropagationStopped) {
break;
}
await _dispatchToListener(event, listenerDefinition);
}
}