【发布时间】:2018-01-30 10:42:28
【问题描述】:
当路由主控ListView 及其详细信息ItemView 和Navigator 时,ListView 的滚动位置在返回堆栈上丢失。
如何恢复ListView的滚动位置?
重用 ListView 小部件也丢失了位置 - 在颤振示例中也没有看到重用小部件。
Rainer 要求的示例代码,
Widget build(BuildContext context) {
return new MaterialApp(
routes: <String, WidgetBuilder>{
'/': (BuildContext context) => new MyListView(),
},
onGenerateRoute: (RouteSettings s) {
final List<String> paths = name.split('/');
...
return new new ItemView(paths[1])
}
}
在MyListView,当ItemRow.onTab => Navigator.pushNamed(c, '/item/1')。
在ItemView后退按钮调用Navigator.pushNamed('/');
两个 Widget 都是有状态的
【问题讨论】:
-
我无法重现该问题。我的 ListView 保持状态。您的 ListView 是包裹在 Stateful 还是 StatelessWidget 中?你能分享一些代码吗?
-
可能是
Navigator.pop()恢复以前的小部件状态。两个小部件都是有状态的。 -
我明白了。它应该saved scroll position。我一定是错过了什么。
标签: flutter