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);
}