Firebase 对用户身份验证状态的更改不会';不要再次触发初始路由
这是我的应用程序的根目录:Firebase 对用户身份验证状态的更改不会';不要再次触发初始路由,firebase,flutter,dart,firebase-authentication,Firebase,Flutter,Dart,Firebase Authentication,这是我的应用程序的根目录: @override Widget build(BuildContext context) { return FutureBuilder( future: _appInitialization, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { return StreamBui
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _appInitialization,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
return StreamBuilder<User>(
stream: AppAuth.instance.authStateChanges(),
builder: (context, snapshot) {
return MaterialApp(
theme: mainTheme(),
navigatorKey: AppNavigation.instance.navigatorKey,
onGenerateRoute: Router.generateRoute,
initialRoute: Router.initialRoute(snapshot, widget.gameReferenceId),
...
});
} else {
// Show while Firebase is loading
return MaterialApp(
theme: mainTheme(),
home: Container(
alignment: Alignment.center,
child: AppTitle(title: 'loading...')));
}
},
);
}
@覆盖
小部件构建(构建上下文){
回归未来建设者(
未来:_appInitialization,
生成器:(上下文,快照){
if(snapshot.connectionState==connectionState.done){
返回流生成器(
流:AppAuth.instance.authStateChanges(),
生成器:(上下文,快照){
返回材料PP(
主题:主主题(),
navigatorKey:AppNavigation.instance.navigatorKey,
onGenerateRoute:Router.generateRoute,
initialRoute:Router.initialRoute(快照、小部件、游戏参考ID),
...
});
}否则{
//Firebase正在加载时显示
返回材料PP(
主题:主主题(),
家庭:集装箱(
对齐:对齐.center,
子项:AppTitle(标题:“加载…”);
}
},
);
}
我使用initialRoute
根据某些条件获取默认路由。这在应用程序第一次加载时可以正常工作,它会进入登录页面,但如果用户登录,我会被困在登录页面,因为它不会再次运行路由器。initialRoute
功能,尽管流会发出新的快照
我已经试着让它工作了好几个小时,但无论我如何重组我的应用程序或我的路由,我都无法通过登录页面
当身份验证状态更改时,为什么不再次运行
initialRoute
,我该如何进行此操作?请共享代码以备将来使用,并在代码中使用流。