flutter - ScrollController animateTo()
问题描述
我希望水平listView中的选定项目居中,所以我首先计算应该动画到(滚动到)的位置,并且它总是计算正确,但是当我选择一个远离当前选定的项目时,列表无法正确滚动到计算的位置。
代码:
double _position = index * (_width + 2 * _horizontalPadding)
+ (_selectedWidth+_horizontalPadding);
_scrollController.animateTo(
_position,
duration: Duration(milliseconds: 1000),
curve: Curves.ease);
其中 _width 是除所选元素之外的所有元素的宽度,因为它的宽度是 _selectedWidth ,并且水平填充是恒定的.. 并且 index 是所选项目的索引
解决方案
尝试用 PostFrameCallback 包裹滚动
WidgetsBinding.instance.addPostFrameCallback((_) {
double _position = index * (_width + 2 * _horizontalPadding)
+ (_selectedWidth+_horizontalPadding);
_scrollController.animateTo(
_position,
duration: Duration(milliseconds: 1000),
curve: Curves.ease);
}
推荐阅读
- python - Peewee AttributeError-选择多个以上的加入时
- ios - 如何在 iOS 应用中将录制的语音设置为通知声音?
- android - AsyncTask 在 Android 8.1.0 上暂停
- python - 使用 TensorFlow 训练 NN 时出错:TypeError: 'Series' 对象是可变的,因此它们不能被散列
- java - Spring Reactive Application 客户端中的不同错误
- c# - 第一个选项卡图标未调整大小 iOS TabbedRenderer
- sql - 用于插入项目的迁移脚本 sql server
- python - Pytest:在程序中使用 python 线程模拟/修补 sys.stdin
- objective-c - 如何在 voip 中接收消息?
- vba - 如果条件与应用列过滤器相关联