如何获取颤振中列表视图滚动的索引号?

2024-02-05

我在 flutter 应用程序中使用下面的列表视图生成器代码,我需要在滚动时获取列表中项目的索引。就像函数一样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 from 可见性检测器 https://pub.dev/packages/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;

注意:这是基于滚动方向,即最后一个可见项目的索引等于最后一个可见项目的索引滚动后;如果向前滚动,则为屏幕底部项目的索引,但如果反向滚动,则为屏幕顶部项目的索引。不过,可以轻松更改此逻辑(例如,使用队列来存储全部可见项目)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取颤振中列表视图滚动的索引号? 的相关文章