作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 flutter 应用程序中为 ListView 构建器使用以下代码我需要在滚动时获取列表中项目的索引。就像onPageChanged:(){}
的功能使用时 PageView.Builder
return ListView.builder(
itemCount: posts.length,
itemBuilder: (context, index) {
final item = posts[index];
return Post(index: index, title: 'Test', imageUrl: 'https://www.google.com',);
},
);
我怎样才能得到那个?
最佳答案
没有这么简单的方法可以做到这一点,但您可以使用 VisibilityDetector
来自 visibility_detector包裹:
您可以通过用 VisibilityDetector
包裹每个列表项来获取在屏幕上完全可见的最后一个列表项的索引。 .
itemBuilder: (context, index) {
return VisibilityDetector(
key: Key(index.toString()),
onVisibilityChanged: (VisibilityInfo info) {
if (info.visibleFraction == 1)
setState(() {
_currentItem = index;
print(_currentItem);
});
},
child: Post(index: index, title: 'Test', imageUrl: 'https://www.google.com',)
);
},
_currentItem
是主小部件状态中的一个变量,用于存储最后一个可见项的索引:
int _currentItem = 0;
注意:这是基于滚动方向,即最后一个可见项的索引等于滚动后可见的最后一项的索引;如果向前滚动,它是屏幕底部项目的索引,但如果反向滚动,它是屏幕顶部项目的索引。不过,这个逻辑可以很容易地改变(例如,使用队列来存储可见项目的总数)。
关于flutter - 如何在 flutter 中获取 ListView 滚动的索引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63573632/
我是一名优秀的程序员,十分优秀!