broadcast method

Future<void> broadcast(
  1. NyEvent event, [
  2. Map? params
])

Implementation

Future<void> broadcast(NyEvent event, [Map? params]) async {
  final Type eventType = event.runtimeType;

  if (_subscriptions.containsKey(eventType)) {
    final listeners = List<NyListener>.from(_subscriptions[eventType]!);

    for (var listener in listeners) {
      // Skip if listener was already removed (could happen if returning false in a callback)
      if (!_subscriptions.containsKey(eventType) ||
          !_subscriptions[eventType]!.contains(listener)) {
        continue;
      }

      listener.setEvent(event);
      dynamic result = await listener.handle(params);

      // Check if we should stop propagation
      if (result != null && result == false) {
        break;
      }
    }
  }
}