我希望水平listView中的选定项居中,因此我首先计算应该动画化(滚动到)的位置,并且总是正确计算出该位置,但是当我选择一个远离当前选定项的项目时一,列表无法正确滚动到计算出的位置。
代码:
double _position = index * (_width + 2 * _horizontalPadding)
+ (_selectedWidth+_horizontalPadding);
_scrollController.animateTo(
_position,
duration: Duration(milliseconds: 1000),
curve: Curves.ease);
其中_width是除选定元素以外的所有元素的宽度,因为其宽度为_selectedWidth,并且水平填充为常量..而index为选定项目的索引
WidgetsBinding.instance.addPostFrameCallback((_) {
double _position = index * (_width + 2 * _horizontalPadding)
+ (_selectedWidth+_horizontalPadding);
_scrollController.animateTo(
_position,
duration: Duration(milliseconds: 1000),
curve: Curves.ease);
}