invoke<Event extends EventBase> method

  1. @override
InvokeResult<State> invoke<Event extends EventBase>(
  1. Event event
)
override

Implementation

@override
InvokeResult<State> invoke<Event extends EventBase>(Event event) {
  if (isClosed) {
    throw Exception('EventBus is closed.');
  }

  final handlers = _eventHandlers[Event];

  if (handlers == null || handlers.isEmpty) {
    return InvokeResult.unhandled(
      state: state,
    );
  }

  final previous = state;

  try {
    for (var _EventHandler(:handler) in handlers) {
      handler(event);
    }

    onAfterInvoke(event, previous);
  } catch (e, stackTrace) {
    return InvokeResult.error(
      state: state,
      error: e,
      stackTrace: stackTrace,
    );
  }

  return InvokeResult.done(
    state: state,
  );
}