getTimer method

Timer? getTimer()

Implementation

Timer? getTimer() {
  return widget.options.autoPlay
      ? Timer.periodic(widget.options.autoPlayInterval, (_) {
          if (!mounted) {
            clearTimer();
            return;
          }

          final route = ModalRoute.of(context);
          if (route?.isCurrent == false) {
            return;
          }

          CarouselPageChangedReason previousReason = mode;
          changeMode(CarouselPageChangedReason.timed);
          int nextPage = carouselState!.pageController!.page!.round() + 1;
          int itemCount = widget.itemCount ?? widget.items!.length;

          if (nextPage >= itemCount &&
              widget.options.enableInfiniteScroll == false) {
            if (widget.options.pauseAutoPlayInFiniteScroll) {
              clearTimer();
              return;
            }
            nextPage = 0;
          }

          carouselState!.pageController!
              .animateToPage(nextPage,
                  duration: widget.options.autoPlayAnimationDuration,
                  curve: widget.options.autoPlayCurve)
              .then((_) => changeMode(previousReason));
        })
      : null;
}