如何在Flatter中为Firebase Auth使用onAuthStateChanged? 我正在使用firebase auth和google登录来处理身份验证 到目前为止,我可以使用firebase_auth/google_sign_登录我的Flatter应用程序 我使用的firebase_auth.dart插件来自: 我使用onAuthStateChanged来检测用户何时登录,一切正常 我的问题是:当我注销时,onAuthStateChanged似乎没有注意到

如何在Flatter中为Firebase Auth使用onAuthStateChanged? 我正在使用firebase auth和google登录来处理身份验证 到目前为止,我可以使用firebase_auth/google_sign_登录我的Flatter应用程序 我使用的firebase_auth.dart插件来自: 我使用onAuthStateChanged来检测用户何时登录,一切正常 我的问题是:当我注销时,onAuthStateChanged似乎没有注意到,firebase,firebase-authentication,flutter,Firebase,Firebase Authentication,Flutter,这是我的代码(现在“应用程序”只是一些虚拟页面) 然后立即记录: "Notified 0 auth state listeners." 您应该使用StreamBuilder来确保您的小部件得到通知。如果查看authStateChanged,它实际上返回一个流 \u auth.onAuthStateChanged在没有用户登录的情况下返回null。这将使StreamBuilder将snapshot.hasData解释为false,即使它是实际流的返回值。可以使用stream:_auth.onAu

这是我的代码(现在“应用程序”只是一些虚拟页面)

然后立即记录:

"Notified 0 auth state listeners."

您应该使用
StreamBuilder
来确保您的小部件得到通知。如果查看authStateChanged,它实际上返回一个


\u auth.onAuthStateChanged
在没有用户登录的情况下返回
null
。这将使StreamBuilder将snapshot.hasData解释为
false
,即使它是实际流的返回值。可以使用
stream:_auth.onAuthStateChanged.map((value)=>value!=null)
来修复它。
"Notifying auth state listeners." 
"Notified 0 auth state listeners."
class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: new StreamBuilder(
        stream: _auth.onAuthStateChanged,
        builder: (context, snapshot) {
          // Simple case
          if (snapshot.hasData) {
            return AppPage();
          }

          return SplashPage();
        },
      ),
    );
  }
}