从页面返回时,我想保存滚动状态。
这就是我实现延迟加载列表视图的方式。
class TopStoriesPage extends StatefulWidget {
@override
State<StatefulWidget> createState() => _TopStoriesPage();
}
class _TopStoriesPage extends State<TopStoriesPage> {
StoriesListWidget _storiesListWidget = new StoriesListWidget();
PagewiseLoadController _pageLoadController;
@override
Widget build(BuildContext context) {
TopStoryModelProvider _provider =
Provider.of<TopStoryModelProvider>(context);
_pageLoadController = PagewiseLoadController(
pageSize: _storiesListWidget.pageSize,
pageFuture: (pageIndex) {
return _provider.fetchTopStories(
pageIndex * _storiesListWidget.pageSize,
_storiesListWidget.pageSize); // This returned Future list is being cached, future list items was in local provider when not lazy loaded.
},
);
return Scaffold(
drawer: DrawerMenuWidget(),
appBar: AppBar(
title: Text('Top Stories'),
),
body: Center(
child: RefreshIndicator(
onRefresh: () async {
_provider.clearTopStories();
_pageLoadController.reset();
await Future.value({});
},
child: PagewiseListView(
key: new PageStorageKey('TopStoriesPageListView'),
itemBuilder: _storiesListWidget.itemBuilder,
pageLoadController: _pageLoadController,
),
),
),
);
}
}
这就是我导航到其他页面的方式
Navigator.push(
context,
MaterialPageRoute(builder: (context) => CommentListWidget(story)),
);
另一页是带有AppBar的脚手架,因此我使用后退按钮返回第一页。