导航后将滚动控制器设置为动画到 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]));
人,
目标:使用我的 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]));