Flutter не может перехватить PlatformException при попытке авторизации в firebase - PullRequest
0 голосов
/ 19 мая 2018

Я только недавно начал использовать flutter, я пытаюсь реализовать вход через firebase, используя электронную почту и пароль, и это работает, когда я ввожу правильную электронную почту и пароль, но не когда пароль неправильный.Выдает PlatformException, если пароль неверный, а затем приложение зависает, хотя я пытался отловить исключение, пока Android Studio показывает это ниже:

enter image description here

Вот мой знак реализации:

String _reason;
  Future<void> _performLogin() async {
    String reason;
    // This is just a demo, so no actual login here.
    try{
      FirebaseUser user =  await FirebaseAuth.instance.signInWithEmailAndPassword(email: _email, password: _password);
      if(user != null){
        Navigator.of(context).push(new MaterialPageRoute<dynamic>(
          builder: (BuildContext context) {
            return new MyApp();
          },
        ));
        final snack = new SnackBar(
          content: new Text("Signed In Successfully"),
          action: null,
          duration: new Duration(seconds: 4),
          backgroundColor: Colors.black,
        );

        Scaffold.of(context).showSnackBar(snack);
      }
    }on PlatformException catch(e){

      reason = '${e.message}';

      /*final snack = new SnackBar(
        content: new Text(e.message),
        action: null,
        duration: new Duration(seconds: 4),
        backgroundColor: Colors.black,
      );

      Scaffold.of(context).showSnackBar(snack);*/
    }
    setState(() {
      _reason = reason;
    });

  }

Я также добавил import 'package:flutter/services.dart' show PlatformException;

Пожалуйста, дайте мне знать, как отловить исключение, спасибо.

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

У меня была такая же проблема некоторое время, и я выяснил причину.

Проблема здесь в том, что, кажется, вы не можете поймать исключение PlatformException, в действительности вы «ловите»исключение.

В Android Studio мы можем установить политику прерывания отладки, выбрав «Выполнить»> «Просмотр точек останова».enter image description here

Если вы снимите флажок «Включено», вы обнаружите, что Android Studio «не мешает» вашему обнаружению исключения, и ваше приложение отобразит снэк-барправильно, когда выполняется условие catch, что мы и ожидаем, «когда мы не отлаживаем» приложение.

Но когда мы отлаживаем с включенными исключениями Break on, Android Studio просто выполняет свою работу, прерывая PlatformException до того, каквыполняется условие catch.

Итак, вы можете просто снять флажок с опции Enabled или просто нажать кнопку «Продолжить программу» в Android Studio и просто не беспокоиться об этом.Ваше приложение, вероятно, работает просто отлично.:)

0 голосов
/ 19 мая 2018

Обновите свой отпечаток пальца отладки Android в настройках консоли Firebase и попробуйте

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