animateToItem method
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,
),
]);
}