goTo method

  1. @override
Future<void> goTo({
  1. required int index,
  2. Duration? delay,
  3. Duration duration = const Duration(milliseconds: 150),
  4. Curve curve = Curves.easeIn,
})
override

Animate to the step index. If the current step index equals the provided step index nothing will happen.

Implementation

@override
Future<void> goTo({
  required int index,
  Duration? delay,
  Duration duration = const Duration(milliseconds: 150),
  Curve curve = Curves.easeIn,
}) async {
  if (this.index == index || !getIsGoToEnabled(index)) {
    return;
  }
  _events.add(WizardGoToEvent(
    fromIndex: this.index,
    toIndex: index,
  ));
  final delayUntil = DateTime.now().add(duration);
  final oldIndex = this.index;
  final newIndex = index;
  if (_onStepChanged != null) {
    await _onStepChanged!(
      oldIndex,
      index,
    );
  }
  final now = DateTime.now();
  if (delay != null && delayUntil.isAfter(now)) {
    final realDelay = Duration(
      milliseconds:
          delayUntil.millisecondsSinceEpoch - now.millisecondsSinceEpoch,
    );
    await Future.delayed(realDelay);
  }
  _index.add(newIndex);
  await Future.wait([
    stepControllers[newIndex].step.onShowing(),
    stepControllers[oldIndex].step.onHiding(),
    pageController.animateToPage(
      newIndex,
      duration: duration,
      curve: curve,
    ),
  ]);
  await Future.wait([
    stepControllers[newIndex].step.onShowingCompleted(),
    stepControllers[oldIndex].step.onHidingCompleted(),
  ]);
}