addEventListener method

  1. @mustCallSuper
void addEventListener(
  1. String eventType,
  2. EventHandler eventHandler, {
  3. EventListenerOptions? addEventListenerOptions,
})
inherited

Implementation

@mustCallSuper
void addEventListener(String eventType, EventHandler eventHandler, {EventListenerOptions? addEventListenerOptions}) {
  if (_disposed) return;
  bool capture = false;
  if (addEventListenerOptions != null)
    capture = addEventListenerOptions.capture;
  List<EventHandler>? existHandler = capture ? _eventCaptureHandlers[eventType] : _eventHandlers[eventType];
  if (existHandler == null) {
    if (capture)
      _eventCaptureHandlers[eventType] = existHandler = [];
    else
      _eventHandlers[eventType] = existHandler = [];
  }
  existHandler.add(eventHandler);
  if (this is Element) {
    scheduleMicrotask(() {
      if (_eventHandlers[eventType]?.isNotEmpty == true && !(this as Element).hasEvent) {
        (this as Element).renderStyle.requestWidgetToRebuild(AddEventUpdateReason());
      }
    });
  }
  SchedulerBinding.instance.addPostFrameCallback((_) {
    if (_eventWaitingCompleter.containsKey(eventType)) {
      _eventWaitingCompleter[eventType]!();
      _eventWaitingCompleter.remove(eventType);
    }
  });
}