Flutter 如何获取Flitter中listview的滚动索引号?
我在颤振应用程序中使用下面的listview生成器代码,我需要在滚动时获取列表中项目的索引。就像使用Flutter 如何获取Flitter中listview的滚动索引号?,flutter,indexing,flutter-listview,Flutter,Indexing,Flutter Listview,我在颤振应用程序中使用下面的listview生成器代码,我需要在滚动时获取列表中项目的索引。就像使用PageView.Builder时,onPageChanged的函数:(){} return ListView.builder( itemCount: posts.length, itemBuilder: (context, index) { final item = posts[index];
PageView.Builder时,onPageChanged的函数:(){}
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
:
通过使用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',)
);
},
\u currentItem
是主窗口小部件状态中的一个变量,用于存储最后一个可见项的索引:
int _currentItem = 0;
注意:这基于滚动方向,即最后一个可见项的索引等于滚动后最后一个可见项的索引;如果滚动方向为前进方向,则为屏幕底部项目的索引;如果滚动方向为相反方向,则为屏幕顶部项目的索引。这种逻辑可以很容易地改变(例如,使用队列存储全部可见项)。在o索引中,我在列表中有2个元素如何获取列表项的索引它没有给出点击方法我尝试您可以建议的任何解决方案