首页 > 解决方案 > 在 Flutter ListView 中,我如何知道视图中第一个和最后一个项目的索引号?

问题描述

给定一个滚动了一些偏移量的 ListView,我如何知道当前视图中的第一个和最后一个项目的索引号?

我试过这个:

class MySliverChildBuilderDelegate extends SliverChildBuilderDelegate {
  MySliverChildBuilderDelegate(IndexedWidgetBuilder builder, {int childCount})
      : super(builder, childCount: childCount);

  @override
  void didFinishLayout(int firstIndex, int lastIndex) {
    print("firstIndex = $firstIndex / lastIndex = $lastIndex");
  }
}

接着:

SliverChildBuilderDelegate childrenDelegate =
    MySliverChildBuilderDelegate(itemBuilder, childCount: childCount);

ListView.custom(
    controller: _controller,
    childrenDelegate: childrenDelegate));

但是那些 firstIndex 和 lastIndex 实际上并不是我所认为的......

标签: flutterflutter-layoutflutter-sliver

解决方案


这个信息是不可用的。

RenderSliverList您可以获得的最多的是(的较低层)已布置的索引ListView

这相当于可见的内容+周围的潜在额外内容。


推荐阅读