drain method
void
drain()
Implementation
void drain() {
if (drainDisabled) return;
drainDisabled = true;
final List<dynamic> objects = this.objects;
final List<TrackEntryCallback> onStartCallbacks =
animState.onStartCallbacks;
final List<TrackEntryCallback> onInterruptCallbacks =
animState.onInterruptCallbacks;
final List<TrackEntryCallback> onEndCallbacks = animState.onEndCallbacks;
final List<TrackEntryCallback> onDisposeCallbacks =
animState.onDisposeCallbacks;
final List<TrackEntryCallback> onCompleteCallbacks =
animState.onCompleteCallbacks;
final List<TrackEntryEventCallback> onEventCallbacks =
animState.onEventCallbacks;
for (int i = 0; i < objects.length; i += 2) {
final EventType? type = objects[i] as EventType?;
final TrackEntry? entry = objects[i + 1] as TrackEntry?;
switch (type) {
case null:
case EventType.start:
if (entry!.onStartCallback != null) entry.onStartCallback!(entry);
for (TrackEntryCallback callback in onStartCallbacks) {
callback(entry);
}
break;
case EventType.interrupt:
if (entry!.onInterruptCallback != null) {
entry.onInterruptCallback!(entry);
}
for (TrackEntryCallback callback in onInterruptCallbacks) {
callback(entry);
}
break;
case EventType.end:
case EventType.dispose:
if (type == EventType.end) {
if (entry!.onEndCallback != null) entry.onEndCallback!(entry);
for (TrackEntryCallback callback in onEndCallbacks) {
callback(entry);
}
}
if (entry!.onDisposeCallback != null) entry.onDisposeCallback!(entry);
for (TrackEntryCallback callback in onDisposeCallbacks) {
callback(entry);
}
animState.trackEntryPool.free(entry);
break;
case EventType.complete:
if (entry!.onCompleteCallback != null) {
entry.onCompleteCallback!(entry);
}
for (TrackEntryCallback callback in onCompleteCallbacks) {
callback(entry);
}
break;
case EventType.event:
final Event? event = objects[i++ + 2] as Event?;
if (entry!.onEventCallback != null) {
entry.onEventCallback!(entry, event);
}
for (TrackEntryEventCallback callback in onEventCallbacks) {
callback(entry, event);
}
break;
}
}
clear();
drainDisabled = false;
}