addEffect method

  1. @override
Animate addEffect(
  1. Effect effect
)
override

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