Вопрос: title
Мне нужна какая-то проверка сеанса, например sessionId ?? index.html
, я понятия не имею, как это сделать. Router.dashboardView
и Router.loginView
являются static const String
, сгенерированными пакетом AutoRoute как namedRoute. Текущий код работает нормально, если я получаю к нему доступ из root, но я могу обойти его, если напишу имя маршрута непосредственно в URL.
Пример (root): https://webapp.web.app/ => автоматически дать мне https://webapp.web.app/# / loginView
Пример (записать имя маршрута на URL): https://webapp.web.app/# / dashboardView (в обход loginView)
Спасибо за любые ваши предложения и идеи.
Это мой текущий код,
main.dart:
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,
);
}
}
dashboard_view.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'),
),
);
}
}