给出一个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实际上不是我所想要的...
答案 0 :(得分:0)
此信息不可用。
您可以获得的最多信息是RenderSliverList
(ListView
的下一层)所布置内容的索引。
相当于可见的东西+周围潜在的东西。
答案 1 :(得分:0)
从2020年开始,我想这个问题的答案将是使用ListView
(https://pub.dev/packages/scrollable_positioned_list)而不是itemPositionsListener.positions.addListener((positions) => ...);
。
然后,您可以监视屏幕上可见的项目:
{{1}}