在颤动中加载项目后将Listview滚动到底部
Posted
技术标签:
【中文标题】在颤动中加载项目后将Listview滚动到底部【英文标题】:Scroll Listview to bottom after items loaded in flutter 【发布时间】:2020-09-18 09:02:57 【问题描述】:我想在 Widget 渲染后将 Listview 滚动到底部。 尝试了下面的代码,但它在 Listview 呈现之前被调用。
ScrollController _lvScrollCtrl = new ScrollController();
@override
void initState()
getData();
loadListviewData();
WidgetsBinding.instance.addPostFrameCallback((_)
_lvScrollCtrl.animateTo(_lvScrollCtrl.position.maxScrollExtent,
duration: const Duration(milliseconds: 500), curve: Curves.easeOut);
);
super.initState();
我也尝试过将 Listview 的 reverse 属性设置为 true。但这会将所有项目带到 Expanded 小部件的底部。 我只是想要一个普通的 Listview 向下滚动到最后以显示 Load 的最新更新。 :/
【问题讨论】:
【参考方案1】:我在 return 语句之前将下面的代码移到了 build 函数中,它运行良好。刚刚实现 addPostFrameCallback 回调只会在当前帧结束后调用一次。所以我需要一次又一次地设置它以保持它的调用。
WidgetsBinding.instance.addPostFrameCallback((_)
_lvScrollCtrl.animateTo(_lvScrollCtrl.position.maxScrollExtent,
duration: const Duration(milliseconds: 500), curve: Curves.easeOut);
);
【讨论】:
以上是关于在颤动中加载项目后将Listview滚动到底部的主要内容,如果未能解决你的问题,请参考以下文章
每次我在 WPF 中加载时如何使 Listbox 的 ScrollViewer 滚动到顶部