【问题标题】:How to get the index number on scroll for listview in flutter?如何在颤动中获取列表视图的滚动索引号?
【发布时间】:2020-12-13 20:05:31
【问题描述】:

我在颤振应用程序中使用下面的列表视图构建器代码,我需要在滚动时获取列表中项目的索引。就像使用PageView.BuilderonPageChanged:(){}的功能一样

return ListView.builder(
              itemCount: posts.length,
              itemBuilder: (context, index) {
                final item = posts[index];
                return Post(index: index, title: 'Test', imageUrl: 'https://www.google.com',);
              },
            );

我怎样才能得到它?

【问题讨论】:

    标签: flutter indexing flutter-listview


    【解决方案1】:

    没有这么简单的方法可以做到这一点,但您可以使用来自visibility_detector 包的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',)
      );
    },
    

    _currentItem 是主小部件状态中的一个变量,用于存储最后一个可见项的索引:

    int _currentItem = 0;
    

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

    【讨论】:

    • at o index 我在列表中有 2 个元素如何获取列表项的索引它没有给出点击方法我尝试任何你可以建议的解决方案
    猜你喜欢
    • 2019-12-24
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多