问:题
我需要某种会话检查,例如sessionId ?? index.html
,我不知道该怎么做。Router.dashboardView
并由AutoRoute 包Router.loginView
生static const String
成为namedRoute。如果我从 root 访问当前代码,它可以正常工作,但如果我直接在 Url 上写路由名称,我可以绕过它。
示例(根):https ://webapp.web.app/ => 自动给我https://webapp.web.app/#/loginView
示例(在 Url 上写入路由名称):https ://webapp.web.app/#/dashboardView(绕过 loginView)
感谢您的任何建议和想法。
这是我当前的代码,
主要飞镖:
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool isLogin;
String initialRoute;
@override
void initState() {
super.initState();
initialRoute = checkSession();
}
String checkSession() {
isLogin = WebStorage.instance.sessionId != null;
return isLogin ? Router.dashboardView : Router.loginView;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: initialRoute,
onGenerateRoute: Router.onGenerateRoute,
navigatorKey: Router.navigatorKey,
);
}
}
仪表板视图.dart:
class DashboardView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('DashboardView'),
),
);
}
}
login_view.dart:
class LoginView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text('LoginView'),
),
);
}
}