我无法找到最好的解决方案,以使Web应用程序能够响应身份验证状态的更改,同时还可以与BottomNavigationBar完美协作。
Widget build(BuildContext context) {
return MaterialApp(
title: 'Inventology',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: BlocBuilder<AuthenticationBloc,AuthenticationState>(
builder: (context, state) {
if(state is AuthenticationAuthenticated)
return Navigator(
initialRoute: '/products',
onGenerateRoute: (RouteSettings settings) {
switch(settings.name) {
case '/products':
return new MaterialPageRoute(builder: (_) => HomeShell(0), settings: settings);
case '/boxes':
return new MaterialPageRoute(builder: (_) => HomeShell(1), settings: settings);
case '/inventory':
return new MaterialPageRoute(builder: (_) => HomeShell(2), settings: settings);
default:
return new MaterialPageRoute(builder: (_) => HomeShell(0), settings: new RouteSettings(name: '/products'));
}
},
);
else
return LoginPage();
},
),
);
}
基本上,如果用户通过了身份验证,则他们将启动到应用程序中。我遇到的问题是,在浏览器中编辑URL不会执行任何操作,URL只会恢复为原来的状态。我相信这与使用第二个导航器有关。但是我还应如何使应用响应身份验证状态的更改?另外,更改导航栏上的选项卡将重新构建整个页面,包括视觉上没有吸引力的导航栏。
该如何做才能更改URL以更新路由,以及如何解决更改选项卡的问题?