Flutter: PlatformException, генерируемый FireBase, не будет пойман - PullRequest
0 голосов
/ 23 марта 2020

У меня есть функция, которая используется для входа в Firebase с использованием firebase_auth, однако всякий раз, когда выдается исключение, оно не перехватывается и по-прежнему отображается в консоли Android Studio, равно как и операторы print в блоке catch когда-либо бежать.

Как мне это исправить?

signIn({String email, String password}) {
    print('listened');
    try {
      FirebaseAuth.instance.signInWithEmailAndPassword(
          email: email, password: password);
    }
    on PlatformException catch (signUpError) {
      print(signUpError.code);
      if (signUpError.code == 'ERROR_WEAK_PASSWORD') {

        print('Weak Password');

      }else if(signUpError.code=='ERROR_USER_NOT_FOUND'){
        print('Invalid Username');
      }

      else{
        print(signUpError.toString());
      }
    }
  }

1 Ответ

0 голосов
/ 23 марта 2020

signInWithEmailAndPassword возвращает Future<AuthResult> (это асинхронный), поэтому вам нужно использовать метод catchError, чтобы перехватить ошибку при вызове асинхронного метода:

 FirebaseAuth.instance.signInWithEmailAndPassword(email: email, password: password).then((result) {
    print(result);
})
.catchError((error) {
    print("Something went wrong: ${error.message}");
  });

Проверьте следующее:

https://api.dart.dev/stable/2.3.0/dart-async/Future/catchError.html

https://medium.com/firebase-tips-tricks/how-to-use-firebase-authentication-in-flutter-50e8b81cb29f

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...