找出 ListView 中的哪些项目是可见的
Find out which items in a ListView are visible
我如何找出 ListView
中当前 visible
或 invisible
的项目?
例如,我在 ListView
中有 100 个项目,当我滚动到屏幕或列表的顶部时,我想检测哪些项目在视口中出现或消失。
插图:
没有简单的方法可以做到这一点。 Here 是同一个问题,但是没有答案。
有一个活跃的GitHub issue关于这个。
该问题有多种解决方案。这个Gist features one that requires the rect_getter
package.
或者,您可以查看 this proposal.
TL;DR
如果您正在寻找一种简单的方法来找到它,这还没有实现。但是,有一些解决方案,比如我上面提到的以及来自其他软件包的解决方案,例如 VisibilityDetector
from flutter_widgets
.
有一个 package 用于此目的。
A VisibilityDetector widget wraps an existing Flutter widget and fires a callback when the widget's visibility changes.
用法:
VisibilityDetector(
key: Key('my-widget-key'),
onVisibilityChanged: (visibilityInfo) {
var visiblePercentage = visibilityInfo.visibleFraction * 100;
debugPrint(
'Widget ${visibilityInfo.key} is ${visiblePercentage}% visible');
},
child: someOtherWidget,
)
您也可以使用inview_notifier_list。它基本上是一个普通的 ListView,它定义了一个可见区域,并且 children 当它们位于该区域时会收到通知。
我如何找出 ListView
中当前 visible
或 invisible
的项目?
例如,我在 ListView
中有 100 个项目,当我滚动到屏幕或列表的顶部时,我想检测哪些项目在视口中出现或消失。
插图:
没有简单的方法可以做到这一点。 Here 是同一个问题,但是没有答案。
有一个活跃的GitHub issue关于这个。
该问题有多种解决方案。这个Gist features one that requires the rect_getter
package.
或者,您可以查看 this proposal.
TL;DR
如果您正在寻找一种简单的方法来找到它,这还没有实现。但是,有一些解决方案,比如我上面提到的以及来自其他软件包的解决方案,例如 VisibilityDetector
from flutter_widgets
.
有一个 package 用于此目的。
A VisibilityDetector widget wraps an existing Flutter widget and fires a callback when the widget's visibility changes.
用法:
VisibilityDetector(
key: Key('my-widget-key'),
onVisibilityChanged: (visibilityInfo) {
var visiblePercentage = visibilityInfo.visibleFraction * 100;
debugPrint(
'Widget ${visibilityInfo.key} is ${visiblePercentage}% visible');
},
child: someOtherWidget,
)
您也可以使用inview_notifier_list。它基本上是一个普通的 ListView,它定义了一个可见区域,并且 children 当它们位于该区域时会收到通知。