emitter method

  1. @override
Future<Emitter> emitter(
  1. dynamic eventType, {
  2. List<EmitterOpt>? opts,
})
override

Creates a new event emitter.

eventType is used for type information for wiring purposes.

Example: var em = await eventbus.emitter(EventT); await em.emit(EventT()); await em.close(); // MUST call this after being done with the emitter

Implementation

@override
Future<Emitter> emitter(dynamic eventType, {List<EmitterOpt>? opts}) async {
  final eventName = eventType.toString();
  if (identical(eventName, WildcardSubscription.toString())) {
    throw Exception('Illegal emitter for wildcard subscription');
  }

  final settings = EmitterSettings();
  if (opts != null) {
    for (final opt in opts) {
      opt(settings);
    }
  }

  late _Emitter emitter;

  await _withNode(eventName, (node) async {
    node.nEmitters++;
    if (settings.makeStateful) {
      node.keepLast = true;
    }
    emitter = _Emitter(
      node: node,
      type: eventName,
      dropper: _tryDropNode,
      wildcard: _wildcard,
      metricsTracer: _metricsTracer,
    );
  }, null);

  return emitter;
}