因此,我遵循了一些教程,并使用底部导航创建了一个应用程序:
首先,我正在使用身份验证,因此,当用户打开应用程序时,它会强化用户身份并获取用户信息,并将其作为状态保存在根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在执行此操作时由于用户参数而给出了错误:
我该如何解决?如果有帮助,代码在我的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/