AnimationTimeline.staggered constructor

AnimationTimeline.staggered({
  1. required List<AnimationController> controllers,
  2. required TimelineStepBuilder buildStep,
  3. Duration gap = Duration.zero,
  4. bool repeat = false,
  5. bool alternate = false,
  6. Object? id,
  7. void onStepStart(
    1. int index,
    2. AnimationTimelineStep step,
    3. TimelineDirection direction
    )?,
  8. void onStepComplete(
    1. int index,
    2. AnimationTimelineStep step,
    3. TimelineDirection direction
    )?,
})

Implementation

factory AnimationTimeline.staggered({
  required List<AnimationController> controllers,
  required TimelineStepBuilder buildStep,
  Duration gap = Duration.zero,
  bool repeat = false,
  bool alternate = false,
  Object? id,
  void Function(
    int index,
    AnimationTimelineStep step,
    TimelineDirection direction,
  )?
  onStepStart,
  void Function(
    int index,
    AnimationTimelineStep step,
    TimelineDirection direction,
  )?
  onStepComplete,
}) {
  if (controllers.isEmpty) {
    throw ArgumentError.value(
      controllers,
      'controllers',
      'must not be empty',
    );
  }

  final steps = <AnimationTimelineStep>[];
  for (var index = 0; index < controllers.length; index++) {
    if (index > 0 && gap > Duration.zero) {
      steps.add(AnimationTimelineStep.delay(gap, label: 'gap-$index'));
    }
    steps.add(buildStep(index, controllers[index]));
  }

  return AnimationTimeline(
    steps: steps,
    repeat: repeat,
    alternate: alternate,
    id: id,
    onStepStart: onStepStart,
    onStepComplete: onStepComplete,
  );
}