Функция createUserWithEmailAndPassword FirebaseAuth вернет исключение, если уже существует учетная запись, связанная с этим адресом электронной почты, а также для любой другой ошибки, которая происходит во время регистрации. Вы можете отслеживать это исключение и действовать соответствующим образом. Обычно я это делаю в функции asyn c в отдельном классе службы Auth:
Asyn c Пример функции:
Future<String> signUp(String email, String password) async {
AuthResult result = await _auth.createUserWithEmailAndPassword(
email: email, password: password);
return result.user.uid;
}
Ожидайте результата:
try {
await signUp(email, password).then((uid) {
// User successfully created so Navigate to new page etc
});
} catch (e) {
print("Error in sign up: $e");
String exception = getExceptionText(e);
_showErrorAlert(
title: "Signup failed",
content: exception,
);
}
И для справки вот функция getExceptionText внутри службы Auth:
String getExceptionText(Exception e) {
if (e is PlatformException) {
switch (e.message) {
case 'There is no user record corresponding to this identifier. The user may have been deleted.':
return 'User with this e-mail not found.';
break;
case 'The password is invalid or the user does not have a password.':
return 'Invalid password.';
break;
case 'A network error (such as timeout, interrupted connection or unreachable host) has occurred.':
return 'No internet connection.';
break;
case 'The email address is already in use by another account.':
return 'Email address is already taken.';
break;
default:
return 'Unknown error occured.';
}
} else {
return 'Unknown error occured.';
}
}