flutter - 保留选项卡 View 页面之间的状态

问题

我有两个 ListViews 使用 TabControllerTabBarView 内呈现。

如何在每个 ListView 之间保留状态(因为没有更好的词),以便:1.) 小部件不会重建和 2.) ListView 记住标签之间的位置。

相关代码

class AppState extends State<App> with SingleTickerProviderStateMixin {
  TabController _tabController;

  @override
  void initState() {
    super.initState();
    _tabController = new TabController(
      vsync: this,
      length: _allPages.length,
    );
  }

  @override
  void dispose() {
    _tabController.dispose();
    super.dispose();
  }

  Widget _buildScaffold(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text('headlines'),
        bottom: new TabBar(
            controller: _tabController,
            isScrollable: true,
            tabs: _allPages
                .map((_Page page) => new Tab(text: page.country))
                .toList()),
      ),
      body: new TabBarView(
          controller: _tabController,
          children: _allPages.map((_Page page) {
            return new SafeArea(
              top: false,
              bottom: false,
              child: new Container(
                key: new ObjectKey(page.country),
                child: new Newsfeed(country: page.country),
              ),
            );
          }).toList()),
    );
  }

  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'news app',
      home: _buildScaffold(context),
    );
  }
}

说明 gif

https://media.giphy.com/media/2ysWhzqHVqL1xcBlBE/giphy.gif

最佳答案

如果您想在 TabBarView 中保留屏幕状态,可以在 State 类中使用名为 AutomaticKeepAliveClientMixin 的混合类。

之后你必须重写 wantKeepAlive 方法并返回 true

我在这里写了一篇文章:https://medium.com/@diegoveloper/flutter-persistent-tab-bars-a26220d322bc

https://stackoverflow.com/questions/49087703/

相关文章:

flutter - 有没有更好的方法来检查#flutter 中的左/右拖动?

dart - Flutter - 翻牌效果

flutter - 小部件测试失败,未找到任何 MediaQuery 小部件

android - 为什么我的 Flutter 应用的 ListView 滚动不如 Flutter

flutter - 当 Flutter TextField 中的键盘可见时,键盘顶部有很多空白区域

dart - 每 x 秒 flutter 一次运行功能

google-maps - Flutter中的谷歌地图没有响应触摸事件

android - 在 Scroll Flutter 上隐藏 Appbar?

android - Flutter 中的 HTTP 请求

dart - flutter 垂直视口(viewport)无界高度错误