animateToItem method

Future<void> animateToItem(
  1. int index, {
  2. Duration duration = const Duration(milliseconds: 300),
  3. Curve curve = Curves.ease,
})

Animates the controlled carousel to the given item index.

Implementation

Future<void> animateToItem(
  int index, {
  Duration duration = const Duration(milliseconds: 300),
  Curve curve = Curves.ease,
}) async {
  if (!hasClients || _carouselState == null) {
    return;
  }

  final bool hasFlexWeights =
      _carouselState!._flexWeights?.isNotEmpty ?? false;
  var targetIndex = index;
  if (_carouselState!.widget.itemBuilder != null) {
    final int? itemCount = _carouselState!.widget.itemCount;
    targetIndex = itemCount != null ? index.clamp(0, itemCount - 1) : 0;
  } else {
    targetIndex = index.clamp(0, _carouselState!.widget.children.length - 1);
  }

  await Future.wait<void>(<Future<void>>[
    for (final _CarouselPosition position
        in positions.cast<_CarouselPosition>())
      position.animateTo(
        _getTargetOffset(position, targetIndex, hasFlexWeights),
        duration: duration,
        curve: curve,
      ),
  ]);
}