在Flutter ListView中,如何知道视图中第一项和最后一项的索引号?

时间:2018-07-08 21:20:08

标签: flutter flutter-layout flutter-sliver

给出一个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实际上不是我所想要的...

2 个答案:

答案 0 :(得分:0)

此信息不可用。

您可以获得的最多信息是RenderSliverListListView的下一层)所布置内容的索引。

相当于可见的东西+周围潜在的东西。

答案 1 :(得分:0)

从2020年开始,我想这个问题的答案将是使用ListViewhttps://pub.dev/packages/scrollable_positioned_list)而不是itemPositionsListener.positions.addListener((positions) => ...);

然后,您可以监视屏幕上可见的项目:

{{1}}