导航后将滚动控制器设置为动画到 ListView.builder 顶部

Animate Scroll Controller to top of ListView.builder after Navigation

人,

目标:使用我的 ListView.builder 导航到页面并立即看到列表的最新(顶部),然后向下滚动以查看较旧的条目。

我有一个 ListView.builder 有 100 个项目 (#1-100)。我可以反转列表以首先获取最新 (100) 的类似 facebook 的提要。

在 ListView 上使用浮动操作按钮,我可以使用下面的按钮成功跳转到列表顶部:

 _postscrollController.animateTo(     
 _scrollController.position.maxScrollExtent 
                            curve: Curves.easeOut,
                            duration: const Duration(milliseconds: 10))

但是,当导航至包含 ListView.builder 的页面时,我无法自动调用上述方法。当我打开应用程序并从主屏幕导航到列表时,它从列表的最底部 (1) 开始,我必须向上滚动才能到达顶部。

任何 advice/suggestions 将不胜感激。

太棒了!

这是一个非常简单的示例,如何反转列表,而不是整个列表 ListView:

import 'package:flutter/material.dart';

main() => runApp(MaterialApp(home: MyHomePage()));

List<String> listData = [
  'oldest',
  'older',
  'old',
  'new',
  'newer',
  'newest',
];

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // reverse the order of the list data
    List<String> reversedListData = listData.reversed.toList();

    return Scaffold(
      appBar: AppBar(),
      body: ListView.builder(
        itemCount: reversedListData.length,
        itemBuilder: (BuildContext context, int index) {
          // use reversed list to build list item
          return ListTile(title: Text(reversedListData[index]));
        },
      ),
    );
  }
}

或者,您也可以将索引翻译为倒计时:

int reversedIndex = listData.length - 1 - index;
return ListTile(title: Text(listData[reversedIndex]));