addEventListener method
void
addEventListener(
- String eventType,
- EventHandler eventHandler, {
- 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);
}
});
}