emitter method
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;
}