各位,
目标:使用我的 ListView.builder 导航到页面并立即看到列表的最新(顶部)条目,然后向下滚动以查看较旧的条目。
我有一个包含 100 个项目的 ListView.builder(#1-100)。我可以反转列表以首先获取最新 (100) 的类似 facebook 的提要。
在 ListView 上使用 float 操作按钮,我可以使用下面的按钮成功跳转到列表顶部:
_postscrollController.animateTo(
_scrollController.position.maxScrollExtent
curve: Curves.easeOut,
duration: const Duration(milliseconds: 10))
但是,当导航到包含 ListView.builder 的页面时,我无法自动调用上述内容。当我打开应用程序并从主屏幕导航到列表时,它从列表的最底部 (1) 开始,我必须向上滚动才能到达顶部。
如有任何意见/建议,我们将不胜感激。
太棒了!
最佳答案
这是一个非常简单的示例,如何反转列表,而不是整个 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]));
关于listview - 导航后将滚动 Controller 动画化到 ListView.builder 的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51722429/