我正在使用用户身份验证(Firebase,但无论如何)构建Flutter应用,并希望为经过身份验证和未经身份验证的用户提供两组路由:
未经身份验证的用户: /登录 /寄存器 ...
经过身份验证的用户: /家 ...
我试图在顶部小部件上设置一个类似这样的开关:
switch(_user.status) {
case UserStatus.Unauthenticated:
return MaterialApp(
title: _title,
theme: _themeData,
routes: ....
initialRoute: "/login",
);
case UserStatus.Authenticated:
return MaterialApp(
title: _title,
theme: _themeData,
onGenerateRoute: _generateRoute,
initialRoute: "/",
);
(我在树的顶部获得了_user
值和一个ChangeNotifierProvider
),但显然不可能有2个顶部导航器。
第二,我试图在_generateRoute
函数中推动开关,但是有一些缓存:当树被重建时(例如,当_user.status
更改时),_generateRoute
函数没有再打一次,所以不起作用。
您如何解决这个问题?
答案 0 :(得分:0)
您可以为此使用三元运算符:
MaterialApp(
title: _title,
theme: _themeData,
routes: ....
initialRoute: _user.status == UserStatus.Unauthenticated ? "/login" : "",
);