在颤动中加载项目后将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 滚动到顶部

如何使用 JSON API 在滚动时在 recyclerview 中加载更多数据

为啥偶尔会在 ListView 中加载错误的图像?

Android ListView 滚动到底部

Flutter ListView 在构建时滚动到底部

Nativescript 无法让 ListView 滚动到底部