fireEvent method

Future<HookedServiceEvent<Id, Data, T>> fireEvent(
  1. HookedServiceEventDispatcher<Id, Data, T> dispatcher,
  2. HookedServiceEvent<Id, Data, T> event, [
  3. HookedServiceEventListener<Id, Data, T>? callback
])

Sends an arbitrary event down the hook chain.

Implementation

Future<HookedServiceEvent<Id, Data, T>> fireEvent(
    HookedServiceEventDispatcher<Id, Data, T> dispatcher,
    HookedServiceEvent<Id, Data, T> event,
    [HookedServiceEventListener<Id, Data, T>? callback]) {
  Future? f;
  if (callback != null && event._canceled != true) {
    f = Future.sync(() => callback(event));
  }
  f ??= Future.value();
  return f.then((_) => dispatcher._emit(event));
}