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);
});
}