返回页面时保存延迟加载列表的滚动位置

时间:2019-06-30 06:37:52

标签: flutter dart

从页面返回时,我想保存滚动状态。

这就是我实现延迟加载列表视图的方式。

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的脚手架,因此我使用后退按钮返回第一页。

0 个答案:

没有答案