Неудачный вход в учетную запись Firebase вызывает исключение и останавливает приложение - PullRequest
0 голосов
/ 16 мая 2018

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

Вот моя функция входа в систему:

Future<FirebaseUser> _handleLogin(String email, String password) async {
    print(email);
    print(password);
    print(_firebaseUser);
    try {
      FirebaseUser user = await _firebaseAuth.signInWithEmailAndPassword(
          email: email, password: password);
      print("done logging in");
      print(user.uid);
      setState(() {
        _firebaseUser = user;
      });
      print("new user set");
      return user;
    } catch (err) {
      print(err.toString());
      return null;
    }
}

Даже когда я использую неправильный пароль, ошибка никогда не выводится на консоль. Вместо этого код VS открывает файл message_codecs.dart и выдает мне сообщение об ошибке.

Это сообщение об ошибке, когда я использую неверный пароль для входа в систему:

Exception has occurred.
PlatformException(Error 17009, FIRAuthErrorDomain, The password is invalid or the user does not have a password.)

Я неправильно обрабатываю ошибки? Как я могу уловить ошибку и заставить приложение продолжить работу после ввода неверного пароля или неправильно отформатированного электронного письма?

1 Ответ

0 голосов
/ 08 июня 2018

Используйте finally после него.

Future<FirebaseUser> _handleLogin(String email, String password) async {
    print(email);
    print(password);
    print(_firebaseUser);
    FirebaseUser user;
    try {
      user = await _firebaseAuth.signInWithEmailAndPassword(
          email: email, password: password);
      print("done logging in");
      print(user.uid);

      print("new user set");
      return user;
    } catch (err) {
      print(err.toString());
    }
      finally {
       if(user != null) {
         //Log in was successfull! 
         setState(() {
          _firebaseUser = user;
        });

      }
      else {
         //Log in was unsuccessfull!
      }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...