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
,我该如何进行此操作?

请共享代码以备将来使用,并在代码中使用流。