在首页布局中使用的CustomScrollView 如果您想上拉并加载更多内容,则必须定义一个ScrollController并将其传递给CustomScrollView。
我的代码
ScrollController _scrollController = new ScrollController();
@override
void initState() {
super.initState();
_scrollController.addListener(() {
if (_scrollController.position.pixels >=
_scrollController.position.maxScrollExtent) {
_loadMoreData();
}
});
}
@override
void dispose() {
super.dispose();
_scrollController.dispose();
}
new CustomScrollView(
controller: _scrollController,
slivers: <Widget>[....],
)
但是,如果这样做,则当加载大量数据时,点击顶部的状态栏将不会滚动到顶部! 如果您在CustomScrollView中删除控制器,或者更改为PrimaryScrollController.of(context)
new CustomScrollView(
controller: PrimaryScrollController.of(context),
)
这没关系! 为什么???
答案 0 :(得分:1)
因为Flutter引擎试图尽可能地模仿OS行为。此轻击手势在iOS上称为"return-to-top",而在Android上根本不存在。此外,为了尽可能接近iOS应用程序的行为,此手势仅触发PrimaryScrollController
类的滚动动画。
作为参考,在iOS本机应用程序开发中,如果屏幕上有多个滚动视图且scrollsToTop设置为true(source),则滚动到顶部的手势无效。