如何在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();
},
),
);
}
}