EventDispatcher class
class EventDispatcher {
 Map<String, EventStream> _eventStreams;
 //-----------------------------------------------------------------------------------------------
 EventStream<Event> on(String eventType) {
   var eventStreams = _eventStreams;
   if (eventStreams == null) {
     eventStreams = new Map<String, EventStream>();
     _eventStreams = eventStreams;
   }
   var eventStream = eventStreams[eventType];
   if (eventStream == null) {
     eventStream = new EventStream._internal(this, eventType);
     eventStreams[eventType] = eventStream;
   }
   return eventStream;
 }
 //-----------------------------------------------------------------------------------------------
 bool hasEventListener(String eventType) {
   var eventStreams = _eventStreams;
   if (eventStreams == null) return false;
   var eventStream = eventStreams[eventType];
   if (eventStream == null) return false;
   return eventStream.hasSubscriptions;
 }
 StreamSubscription<Event> addEventListener(String eventType, EventListener eventListener, {
   bool useCapture: false, int priority: 0 }) {
   return this.on(eventType)._subscribe(eventListener, useCapture, priority);
 }
 void removeEventListener(String eventType, EventListener eventListener, {
   bool useCapture: false }) {
   this.on(eventType)._unsubscribe(eventListener, useCapture);
 }
 void removeEventListeners(String eventType) {
   this.on(eventType).cancelSubscriptions();
 }
 void dispatchEvent(Event event) {
   _dispatchEventInternal(event, this, EventPhase.AT_TARGET);
 }
 //-----------------------------------------------------------------------------------------------
 //-----------------------------------------------------------------------------------------------
 bool _hasPropagationEventListeners(Event event) {
   var eventStreams = _eventStreams;
   if (eventStreams == null) return false;
   var eventStream = eventStreams[event.type];
   if (eventStream == null) return false;
   return eventStream._hasPropagationSubscriptions(event);
 }
 _dispatchEventInternal(Event event, EventDispatcher target, int eventPhase) {
   event._stopsPropagation = false;
   event._stopsImmediatePropagation = false;
   var eventStreams = _eventStreams;
   if (eventStreams == null) return;
   var eventStream = eventStreams[event.type];
   if (eventStream == null) return;
   eventStream._dispatchEventInternal(event, target, eventPhase);
 }
}
Subclasses
DisplayObject, RenderContext, ResourceManager, SoundChannel
Methods
StreamSubscription<Event> addEventListener(String eventType, EventListener eventListener, {bool useCapture: false, int priority: 0}) #
StreamSubscription<Event> addEventListener(String eventType, EventListener eventListener, {
 bool useCapture: false, int priority: 0 }) {
 return this.on(eventType)._subscribe(eventListener, useCapture, priority);
}
void dispatchEvent(Event event) #
void dispatchEvent(Event event) {
 _dispatchEventInternal(event, this, EventPhase.AT_TARGET);
}
bool hasEventListener(String eventType) #
bool hasEventListener(String eventType) {
 var eventStreams = _eventStreams;
 if (eventStreams == null) return false;
 var eventStream = eventStreams[eventType];
 if (eventStream == null) return false;
 return eventStream.hasSubscriptions;
}
EventStream<Event> on(String eventType) #
EventStream<Event> on(String eventType) {
 var eventStreams = _eventStreams;
 if (eventStreams == null) {
   eventStreams = new Map<String, EventStream>();
   _eventStreams = eventStreams;
 }
 var eventStream = eventStreams[eventType];
 if (eventStream == null) {
   eventStream = new EventStream._internal(this, eventType);
   eventStreams[eventType] = eventStream;
 }
 return eventStream;
}
void removeEventListener(String eventType, EventListener eventListener, {bool useCapture: false}) #
void removeEventListener(String eventType, EventListener eventListener, {
 bool useCapture: false }) {
 this.on(eventType)._unsubscribe(eventListener, useCapture);
}