IntervalDuration.delayed constructor

IntervalDuration.delayed({
  1. Duration? startDelay,
  2. Duration? endDelay,
  3. required Duration duration,
})

Creates an IntervalDuration with delay-based timing.

This factory constructor makes it easier to specify delays from the start and end of the animation rather than absolute timing positions.

Parameters:

  • startDelay (Duration?, optional): Delay before animation starts.
  • endDelay (Duration?, optional): How much earlier animation should end.
  • duration (Duration, required): Base animation duration.

The total timeline duration becomes duration + startDelay + endDelay.

Example:

// Animation with 200ms start delay and ending 100ms early
IntervalDuration.delayed(
  startDelay: Duration(milliseconds: 200),
  endDelay: Duration(milliseconds: 100),
  duration: Duration(seconds: 1),
);

Implementation

factory IntervalDuration.delayed({
  Duration? startDelay,
  Duration? endDelay,
  required Duration duration,
}) {
  if (startDelay != null) {
    duration += startDelay;
  }
  if (endDelay != null) {
    duration += endDelay;
  }
  return IntervalDuration(
    start: startDelay,
    end: endDelay == null ? null : duration - endDelay,
    duration: duration,
  );
}