我正在构建一个带有用户身份验证的 Flutter 应用程序(firebase 等等),并希望为经过身份验证和未经身份验证的用户提供两组路由:
未经身份验证的用户: /login /register ...
经过身份验证的用户:/home ...
我试图在顶部小部件上有一个类似这样的开关:
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
a 的值ChangeNotifierProvider
)但显然不可能有 2 个顶级导航器。
其次,我尝试在_generateRoute
函数中按下开关,但有一些缓存:重建树时(例如_user.status
更改时),_generateRoute
不会再次调用函数,因此不起作用。
你如何解决这个问题?