on method

Listener on (String event, Object context, EventCallback callback)

API to register for notification. It is mandatory to pass event name and callback parameters.

Implementation

Listener on(String event, Object context, EventCallback callback) {
  if (null == event || event.trim().length == 0) {
    throw ArgumentError.notNull("event");
  }

  if (null == callback) {
    throw ArgumentError.notNull("callback");
  }

  // Check if the particular listener is there in the listeners collection
  // Return the listener instance, if already registered.
  Listener listener;

  List<Listener> subs =
      this._listeners.putIfAbsent(event, () => new List<Listener>());

  // Check if element is already there in cache matching all criteria.
  listener = subs.firstWhere(
      (element) =>
          element?.eventName == event && element?.callback == callback,
      orElse: () => null);

  if (null == listener) {
    // Create new element.
    listener = new Listener(event, context, callback, () {
      this._listeners[event].removeWhere((element) =>
          element?.eventName == event && element?.callback == callback);
    });
    this._listeners[event].add(listener);
  }

  return listener;
}