dispatch method

  1. @override
Future<void> dispatch(
  1. Event event
)
override

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);
  }
}