【问题标题】:ListView start from bottom of listListView 从列表底部开始
【发布时间】:2022-01-04 20:49:19
【问题描述】:

我正在构建一个聊天应用程序,我想实现一个 ListView() 加载,就像它的 reverse 属性设置为 true 一样,即在构建时显示 ListView 的结尾。我不想将 reverse 属性设置为 true 的原因是,如果 ListView 中的项目没有填满屏幕,它们会对齐到底部(由于性能原因不能使用 shrinkWrap),并且还因为它反转项目的顺序并在列表底部显示新元素,我需要使用扩展运算符,而且我担心性能,因为我从中渲染的地图会显着增长。

我也尝试在 SchedulerBinding.instance!.addPostFrameCallback 中使用 ScrollController 的 jumpTo 方法,但用户可以看到滚动和 它还会使其跳跃,就像它试图滚动超出 ListView 中包含的内容一样。我也使用了ScrollablePositionedList 并设置了我想要滚动的索引,但这也会跳转。

有什么方法可以在视觉或性能方面没有任何缺陷的情况下实现我的目标?

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    你有正确的想法:在initState,跳到最后。可以从position.maxScrollExtent 获取列表末尾。如果正确完成,这不会产生任何视觉或性能缺陷。例如:

      void initState() {
        super.initState();
        WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
          _controller.jumpTo(_controller.position.maxScrollExtent);
        });
      }
    

    _controller 应该是传递给列表的ScrollController

    【讨论】:

      猜你喜欢
      • 2012-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      • 2018-05-07
      • 2020-03-01
      • 2022-12-14
      • 1970-01-01
      相关资源
      最近更新 更多