Как обработать исключение при повторной регистрации с использованием существующего адреса электронной почты и пароля в Firebase Flutter?

#firebase #flutter #dart #firebase-authentication

# #firebase #flutter #dart #firebase-аутентификация

Вопрос:

Я создал приложение flutter и подключил его к аутентификации Firebase (используя адрес электронной почты и пароль). Он работает отлично. Он создает нового пользователя, когда пользователь регистрируется в приложении, выходит из системы, а также входит в систему с этим адресом электронной почты и паролем.

Но когда я пытаюсь повторно зарегистрироваться с тем же адресом электронной почты и паролем, которые я использовал для создания ранее, ИЛИ когда я пытаюсь войти в систему с помощью незарегистрированного адреса электронной почты, я получаю эту ошибку:

Исключение PlatformException (Исключение PlatformException(firebase_auth, com.google.firebase.Исключение FirebaseException: произошла внутренняя ошибка. [ Не удается разрешить узел «www.googleapis.com «:Нет адреса, связанного с именем хоста ], {}, null))

введите описание изображения здесь

И приложение просто перестает работать, как в этом случае загрузка прекращается: смотрите Изображение здесь

Это функция для регистрации, функция входа похожа на эту:

 Future registerWithEmailAndPasswordWithFirebase(
    String email, String password) async {
  try {
    UserCredential credential = await _auth.createUserWithEmailAndPassword(
        email: email, password: password);
    User user = credential.user;

    await DatabaseService(uid: user.uid).updateUserData('New user');

    return _returnUserUid(user);
  } catch (e) {
    print(e.toString());
    return null;
  }
}
 

Как я могу это решить?

Ответ №1:

В приведенном выше случае я запустил приложение, используя отладку Vscode. Итак, всякий раз, когда он получал сообщение об ошибке, приложение просто останавливается, и vscode показывает исключение PlatformException.

Когда я запускал свое приложение с терминала, эта проблема не возникала, она просто показывает, что исключение PlatformException только в терминале, и приложение продолжает работать.