addEffect method
Adds an effect. This is mostly used by Effect extension methods to append effects to an Animate instance.
Implementation
@override
Animate addEffect(Effect effect) {
EffectEntry? prior = _lastEntry;
Duration zero = Duration.zero, delay = zero;
if (effect is ThenEffect) {
delay = _baseDelay = (prior?.end ?? zero) + (effect.delay ?? zero);
} else if (effect.delay != null) {
delay = _baseDelay + effect.delay!;
} else {
delay = prior?.delay ?? _baseDelay;
}
assert(delay >= zero, 'Calculated delay cannot be negative.');
EffectEntry entry = EffectEntry(
effect: effect,
delay: delay,
duration: effect.duration ?? prior?.duration ?? Animate.defaultDuration,
curve: effect.curve ?? prior?.curve ?? Animate.defaultCurve,
owner: this,
);
_entries.add(entry);
_lastEntry = entry;
if (entry.end > _duration && effect is! ThenEffect) _duration = entry.end;
return this;
}