startTimer method

void startTimer()

Implementation

void startTimer() {
  timer = Timer.periodic(Duration(milliseconds: widget.timerRest), (timer) {
    double maxScrollExtent = scroController.position.maxScrollExtent;
    double pixels = scroController.position.pixels;
    //当animateTo的距离大于最大滑动距离时,则要返回第一个child的特定位置,让末尾正好处于最右侧,然后继续滚动,造成跑马灯的假象
    if (pixels + _moveDistance >= maxScrollExtent) {
      if (widget.scrollAxis == Axis.horizontal) {
        position = (maxScrollExtent - blankWidth - widget.width) / 2 +
            pixels -
            maxScrollExtent;
      } else {
        position = (maxScrollExtent - blankHeight - widget.height) / 2 +
            pixels -
            maxScrollExtent;
      }
      scroController.jumpTo(position);
    }
    position += _moveDistance;
    scroController.animateTo(position,
        duration: Duration(milliseconds: widget.timerRest),
        curve: Curves.linear);
  });
}