我试图创建一个注册页面,它应该给出一个错误消息,如果用户与特定的电子邮件id已经存在。但是它不工作。
signUp() {
if (formkey.currentState!.validate()) {
Map<String, String> userDataMap = {
"name": usernameC.text,
"email": emailC.text
};
setState(() {
isLoading = true;
});
authMethods.signUp(emailC.text, passwordC.text).then((value) {
databaseMethods.uploadUserData(userDataMap);
Navigator.pushReplacement(
context, MaterialPageRoute(builder: (context) => ChatRoom()));
});
}
}
从auth调用signUp()函数。
UserData? _userFromFirebase(User? user) {
return user != null ? UserData(userid: user.uid) : null;
}
Future signUp(String email, String pass) async {
try {
UserCredential result = await _auth.createUserWithEmailAndPassword(
email: email, password: pass);
User? user = result.user;
return _userFromFirebase(user);
} catch (e) {
print(e}
}
每次我用相同的邮箱注册,它都没有报错。
如果您使用相同的电子邮件注册,您应该收到以下消息:[firebase_auth/email-already-in-use] The email address is already in use by another account.
我使用print(e.hashCode)
,然后使用这个哈希码来显示错误消息。
好的,我尝试了这个方法,并且成功了。刚刚为"value"添加了空检查属性。
authMethods.signUp(emailC.text, passwordC.text).then((value)
返回null,没有任何其他消息。这就是为什么我看不到错误。