我有一个大问题,但我知道它对人类来说很小。我正在使用 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) 暂停调试应用程序并在红色警报中显示异常。
我阅读了很多关于这种情况的文档,但我找不到解决方案。
答案 0 :(得分: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}");
}
我只是做了这样的事情并解决了我的问题。我仍然不明白不同的抓东西在哪里。感谢所有帮助。 <3
答案 1 :(得分:0)
好的,您可以尝试在 catch
之后使用 signInWithEmailAndPassword
方法,如下所示:
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);
}
}