我正在使用 Firebase 认证来验证 Flutter 应用程序中的用户。当用户输入正确密码时,应用程序会正常显示主页,但是当密码错误时不会发生任何事情。我想每次用户输入错误密码时都显示一个警报。如何实现这一功能呢?
使用currentUser()
方法:
if (FirebaseAuth.instance.currentUser != null) {
// signed in
} else {
// signed out
}
if (await FirebaseAuth.instance.currentUser() == null)
。 - Oliver Dixon错误:无法无条件调用该函数,因为它可能为“null”
- genericUser()
:https://firebase.google.com/docs/auth/flutter/manage-users#get_a_users_profile - Ross Llewallyn对我来说那样做行不通,所以我做了这个:
FirebaseAuth.instance.currentUser().then((firebaseUser){
if(firebaseUser == null)
{
//signed out
}
else{
//signed in
}
});
if(FirebaseAuth.instance.currentUser?.uid == null){
// not logged
} else {
// logged
}
该函数获取已通过应用程序进行身份验证的每个用户在 Firebase 认证 UID 字段上记录的用户 ID(如果存在),否则返回 null。
currentUser?.uid
中的问号是空安全性,以避免空异常(如果为 null,则返回 null)。
尝试这个,它对我有效。
从用户获取令牌并刷新它。
Future<bool> isUserLogged() async {
FirebaseUser firebaseUser = await getLoggedFirebaseUser();
if (firebaseUser != null) {
IdTokenResult tokenResult = await firebaseUser.getIdToken(refresh: true);
return tokenResult.token != null;
} else {
return false;
}
}
Future<FirebaseUser> getLoggedFirebaseUser() {
return firebaseAuthInstance().currentUser();
}
if (FirebaseAuth.instance.currentUser() != null) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Home(),
);
} else {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Welcome(),
);
}
FirebaseAuth.instance.currentUser().then((firebaseUser) {
if (firebaseUser == null) {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (BuildContext context) => LoginPage()));
} else {
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (BuildContext context) => HomePage()));
}
});
void _emailLogin() async{ final user = await _auth.signInWithEmailAndPassword(email: email, password: password);
void _emailLogin() 异步{ final user = await _auth.signInWithEmailAndPassword(email: email, password: password);
if(user != null){
// Do something
}
} catch (e) {
String exception = Auth.getExceptionText(e);
Flushbar(
title: "Sign In Error",
message: exception,
duration: Duration(seconds: 5),
)..show(context);
}
!= null
。 - Günter Zöchbauer