25.Flutter的ListView监听滚动事件之ScrollController

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了25.Flutter的ListView监听滚动事件之ScrollController相关的知识,希望对你有一定的参考价值。

参考技术A 对于滚动的视图,我们经常需要监听它的一些滚动事件,在监听到的时候去做对应的一些事情。

比如视图滚动到底部时,我们可能希望做上拉加载更多;

比如滚动到一定位置时显示一个回到顶部的按钮,点击回到顶部的按钮,回到顶部;

比如监听滚动什么时候开始,什么时候结束;

在Flutter中监听滚动相关的内容由两部分组成:ScrollController和ScrollNotification。

ScrollController

在Flutter中,Widget并不是最终渲染到屏幕上的元素(真正渲染的是RenderObject),因此通常这种监听事件以及相关的信息并不能直接从Widget中获取,而是必须通过对应的Widget的Controller来实现。

ListView、GridView的组件控制器是ScrollController,我们可以通过它来获取视图的滚动信息,并且可以调用里面的方法来更新视图的滚动位置。

另外,通常情况下,我们会根据滚动的位置来改变一些Widget的状态信息,所以ScrollController通常会和StatefulWidget一起来使用,并且会在其中控制它的初始化、监听、销毁等事件。

我们来做一个案例,当滚动到1000位置的时候,显示一个回到顶部的按钮:

jumpTo(double offset)、animateTo(double offset,...):这两个方法用于跳转到指定的位置,它们不同之处在于,后者在跳转时会执行一个动画,而前者不会。

ScrollController间接继承自Listenable,我们可以根据ScrollController来监听滚动事件。

以上是关于25.Flutter的ListView监听滚动事件之ScrollController的主要内容,如果未能解决你的问题,请参考以下文章

Flutter 之 滚动监听及控制(十九)

Android开发之基于监听的事件处理

解决WebView滑动监听问题

ListView的网络加载(使用LRU缓存,滚动监听器)

RecyclerView滑动监听

c# winform 中如何写事件监听 比如监听listview.items.count是不是发生变化