ScrollController animateTo()

问题描述 投票:2回答:1

我希望水平listView中的选定项居中,因此我首先计算应该动画化(滚动到)的位置,并且总是正确计算出该位置,但是当我选择一个远离当前选定项的项目时一,列表无法正确滚动到计算出的位置。

代码:

double _position =  index * (_width + 2 * _horizontalPadding)
                    + (_selectedWidth+_horizontalPadding);
_scrollController.animateTo(
                  _position,
                  duration: Duration(milliseconds: 1000),
                  curve: Curves.ease);

其中_width是除选定元素以外的所有元素的宽度,因为其宽度为_selectedWidth,并且水平填充为常量..而index为选定项目的索引

flutter flutter-animation
1个回答
0
投票
尝试用PostFrameCallback包装滚动条

WidgetsBinding.instance.addPostFrameCallback((_) { double _position = index * (_width + 2 * _horizontalPadding) + (_selectedWidth+_horizontalPadding); _scrollController.animateTo( _position, duration: Duration(milliseconds: 1000), curve: Curves.ease); }

© www.soinside.com 2019 - 2024. All rights reserved.