我使用ScrollController
的SingleChildScrollView
小部件,我想检测 * 滚动开始 , 滚动结束/停止 * 和 * 仍然滚动 *。
我怎么能检测到这一点?
我使用Listener
scrollController = ScrollController()
..addListener(() {
scrollOffset = _scrollController.offset;
});
字符串
我也试过_scrollController.position.activity.velocity
,但没有用。
也有
_scrollController.position.didEndScroll();
_scrollController.position.didStartScroll();
型
但是我怎么用它呢?
7条答案
按热度按时间pexxcrt21#
不需要
NotificationListener
,我们可以单独使用滚动控制器。首先,使用
WidgetsBinding.instance.addPostFrameCallback
注册一个帧后回调,以确保此时滚动控制器已经与滚动视图相关联。我们将在该回调中设置侦听器。为了监听滚动更新,我们可以使用
scrollController.addListener
。对于收听开始和停止滚动,我们可以使用
bgScrollCtrl.position.isScrollingNotifier.addListener
。你可以检查下面的代码:字符串
fafcakar2#
此链接https://medium.com/@diegoveloper/flutter-lets-know-the-scrollcontroller-and-scrollnotification-652b2685a4ac
只需将您的
SingleChildScrollView
Package 为NotificationListener
并更新您的代码,如..字符串
声明方法,
型
您将通过特定的方式收到通知。
8ehkhllq3#
NotificationListner不为我工作,因为我动画滚动视图。当我触摸它时,ScrollEndNotification被调用。
所以为了检测scrollview到达底部或顶部。我添加了Listner到scrollcontroller。
字符串
8i9zcol24#
字符串
要使用这些,您应该向scrollview添加一个侦听器
e5njpo685#
您可以使用
_scrollController.position.pixels
获取滚动位置,并使用addlistener
通知更改字符串
kx1ctssn6#
有一个用于此用例的包。scroll_edge_listener
你可以通过一些配置来检测滚动的开始或结束,比如偏移和去抖动。只要用
ScrollEdgeListener
Package 你的滚动视图并附加一个监听器。字符串
wbrvyc0a7#
更新2023:滚动后检查滚动停止
字符串