【问题标题】:Flutter // I can't catch the Exceptions (Firebase app)Flutter // 我无法捕获异常(Firebase 应用程序)
【发布时间】:2021-04-25 00:59:36
【问题描述】:

我有一个大问题,但我知道这对人类来说是小问题。我正在尝试使用 Flutter 在 Firebase 上进行电子邮件和密码身份验证。 但我总是遇到一些例外。 (PlatformException 和 FirebaseAuthExceptions)。 `

void signInUser(String email, String password) async {
    try {
      if (_auth.currentUser == null) {
        User _oturumAcanUser = (await _auth.signInWithEmailAndPassword(
                email: email, password: password))
            .user;
        Get.to(HomeScreen());
        Get.snackbar("Oturum açıldı", "message");
      } else {
        Get.snackbar("Oturum zaten açık", "message");
        Get.to(HomeScreen());
      }
    } on PlatformException catch (e) {
      _error = e.message;
      Get.snackbar("başlık", e.message);
      throw e;
    } catch (e) {
      _error = e.toString();
      Get.snackbar("başlık", e.message);
    }
  }

`

另外,我正在使用 getX 包。我尝试了一切,但我无法捕捉到异常。当我从 UI 调用此方法时,SDK (VSCode) 暂停调试应用程序并在红色警报中显示异常。

我阅读了很多关于这种情况的文档,但我找不到解决方案。

【问题讨论】:

  • 有什么异常? >当我从 UI 调用此方法时,SDK(VSCode)暂停调试应用程序并在红色警报中显示异常。
  • 它只是某种 FirebaseAuth 异常。喜欢;密码无效,删除用户 bla bla..
  • 那也没用,对不起:/

标签: firebase flutter dart firebase-authentication


【解决方案1】:
void signInUser(String email, String password) async {
try {
  if (_auth.currentUser == null) {
    User _oturumAcanUser = (await _auth.signInWithEmailAndPassword(
            email: email, password: password))
        .user;
    Get.off(HomeScreen());
    Get.snackbar("Oturum açıldı", "message", backgroundColor: Colors.teal);
  } else {
  
    Get.off(HomeScreen());
  }
} on FirebaseAuthException catch (e) {
  _error = e.code;
  Get.snackbar("Giriş Yapılırken Hata",
      "Giriş ypaılırken hata ile karşılaşıldı. Kod: ${e.code}",
      snackPosition: SnackPosition.BOTTOM, snackStyle: SnackStyle.FLOATING);
  throw e;
} catch (e) {
  _error = e.toString();
  Get.snackbar("Hata",
      "Sunucu beklenmedik bir hata ile karşılaştı. Detaylı bilgi: ${e.message}");
}

我只是做了这样的事情并解决了我的问题。仍然我不明白不同的捕获物在哪里。感谢所有帮助。

【讨论】:

    【解决方案2】:

    好的,你可以尝试在signInWithEmailAndPassword之后使用catch方法,如下:

    void signInUser(String email, String password) async {
        try {
          if (_auth.currentUser == null) {
            User _oturumAcanUser = (await _auth.signInWithEmailAndPassword(
                    email: email, password: password)
                 // Here, you can handle the error!
                 .catchError((error) { 
                   print("The error message is: ${error.message}");
                   Get.snackbar("başlık", error.message);
                })
                .user;
            Get.to(HomeScreen());
            Get.snackbar("Oturum açıldı", "message");
          } else {
            Get.snackbar("Oturum zaten açık", "message");
            Get.to(HomeScreen());
          }
        } on PlatformException catch (e) {
          _error = e.message;
          Get.snackbar("başlık", e.message);
          throw e;
        } catch (e) {
          _error = e.toString();
          Get.snackbar("başlık", e.message);
        }
      }
    

    【讨论】:

      猜你喜欢
      • 2021-04-24
      • 1970-01-01
      • 2017-08-10
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 2021-09-02
      • 1970-01-01
      • 2020-08-13
      相关资源
      最近更新 更多