ListView滑动到底部 2023-08-09 周三
2023-08-08 本文已影响0人
勇往直前888
简介
表格移动到顶部或者移动到底部,是常见的一种需求。
移动到顶部
-
ListView
有一个属性ScrollController
,专门用来处理滑动等相关的事宜。有关滑动的方法有两个。
Future<void> animateTo(
double offset, {
required Duration duration,
required Curve curve,
})
void jumpTo(double value)
区别就是一个带动画,一个不带动画
-
大多数时候,一般用带动画的那个。不过,只要有可能,应该用不带动画的那个,效率高。
-
移动到顶部很简单,上面两个方法,给参数0就可以了。
怎么移动到底部?
-
一开始,会给一个比较大的值,比如1000,2000之类;很多时候效果跟移动到底部差不多,不过当内容长度超过这个数值的时候就悲剧了,并没有真正到底;
-
后来,直接给参数
double.infinity
;执行的效果是直接崩溃。Flutter
崩溃的时候还真不多(内存超过2G会闪退),大多数时候是白屏,但是这个时候是直接闪退。 -
ScrollPosition
是ScrollController
中记忆滑动位置的辅助类。其中有两个属性表示最小和最大的可滑动位置。
@override
double get minScrollExtent => _minScrollExtent!;
double? _minScrollExtent;
@override
double get maxScrollExtent => _maxScrollExtent!;
double? _maxScrollExtent;
- 所以,滑动到底部可以这样写:
/// 滑动到底部
listController.jumpTo(listController.position.maxScrollExtent);
- 响应地,滑动到顶部也可以不用给参数0了,可以依样画葫芦
/// 滑动到顶部
listController.jumpTo(listController.position.minScrollExtent);