android - 使用带有状态和构建参数的BottomNavigation

标签 android flutter dart

因此,我遵循了一些教程,并使用底部导航创建了一个应用程序:
enter image description here

首先,我正在使用身份验证,因此,当用户打开应用程序时,它会强化用户身份并获取用户信息,并将其作为状态保存在根Widget上,然后提供给子代Widget。

我正在使用switch进行页面路由:

    switch (widget.destination.id) {
      case 'feed':
        return HomePage(widget.user);
      case 'account':
        return AccountPage(widget.user);
      default:
        return Text('404');
    }

但是,每次我在底部导航上更改页面时,页面都会建立,因此页面之间的状态没有保存。因此,我尝试创建一个预先构建的小部件列表:

class LoggedInRoute extends StatefulWidget {
  const LoggedInRoute(this.user);

  final User user;

  _LoggedInRouteState createState() => _LoggedInRouteState();
}

class _LoggedInRouteState extends State<LoggedInRoute> {
  int _pageIndex = 0;
  List<Widget> _pages = <Widget>[
    // TODO: fix this
    HomePage(widget.user)
  ];
  // ...
}

但是Android Studio在执行此操作时由于用户参数而给出了错误:
enter image description here

我该如何解决?如果有帮助,代码在我的github repository上。

最佳答案

this发生的原因相同。

你必须做,

class LoggedInRoute extends StatefulWidget {
  const LoggedInRoute(this.user);

  final User user;

  _LoggedInRouteState createState() => _LoggedInRouteState();
}

class _LoggedInRouteState extends State<LoggedInRoute> {
  int _pageIndex = 0;
  List<Widget> _pages;

  @override
  void initState() {
    super.initState();
    _pages = <Widget>[
      HomePage(widget.user)
    ];
  }

  // ...
}

希望能帮助到你。

关于android - 使用带有状态和构建参数的BottomNavigation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61221051/

相关文章:

android - 如何更改电源 Estimote 信标?

performance - 在dart中,创建一个Future,完成它并返回它的效率是否比立即创建Future的效率低?

java - 变量不工作android

java - 三星 s8 和 s9 中的 Android 外部写入权限问题

flutter - 在 Flame Forge2d 中射击子弹

flutter - 为什么要在 Dart 类里面使用 Prop ?

flutter - 出现错误——类型 'SocketException' 不是类型 'widget' 的子类型

android-studio - 如何安全地更改 Flutter Android Studio 项目中的 "lib"目录名称?

dart - Google 的 Dart 编程语言的作用是什么?

android - OKHTTP 安全吗?