tick method

  1. @override
void tick(
  1. Duration elapsed
)
override

Implementation

@override
void tick(Duration elapsed) {
  var cursor = Duration.zero;

  for (final step in spec.steps) {
    final start = cursor + step.delay;
    final end = start + step.effect.duration;
    final localElapsed = switch (elapsed) {
      _ when elapsed < start => Duration.zero,
      _ when elapsed >= end => step.effect.duration,
      _ => elapsed - start,
    };

    step.effect.tick(localElapsed);
    cursor = end;
  }
}