【发布时间】:2021-06-10 18:45:44
【问题描述】:
我正在使用 Flutter 和 Firebase 开发移动应用。
当我尝试使用现有电子邮件进行注册时,我总是收到未处理的异常,尽管我已用try catch 包围了关键代码。
我对其进行了测试,并且身份验证方法工作正常。但是,在另一种方法 _submit 中,我试图捕获自己的 HTTPException。 (该类实现了异常。)
submit 中的 catch 块什么都不做,甚至对任何异常都没有反应。有人可以解决我的问题吗?
class Auth with ChangeNotifier{
Future<void> registrieren(String email, String passwort) async {
authenticate(email, passwort, 'signUp');
}
Future<void> authenticate(
String email, String passwort, String urlSegment) async {
final url =
'https://identitytoolkit.googleapis.com/v1/accounts:$urlSegment?key=ASASDD';
try {
final response = await http.post(url,
body: json.encode({
'password': passwort,
'email': email,
'returnSecureToken': true
}));
final responseData = json.decode(response.body);
if (responseData['error'] != null) {
throw HTTPException(responseData['error']['message']);
}
_token = responseData['idToken'];
_userID = responseData['localId'];
_expiryDate = DateTime.now().add(
Duration(
seconds: int.parse(responseData['expiresIn']),
),
);
} catch (error) {
print(error);
}
_autologout();
notifyListeners();
}
并且该方法在另一个类中的这个方法中执行。
Future<void> _submit() async {
if (!_formKey.currentState.validate()) {
// Invalid!
return;
}
_formKey.currentState.save();
setState(() {
_isLoading = true;
});
try {
await Provider.of<Auth>(context, listen: false).registrieren(
_authData['email'],
_authData['passwort'],
);
print("Registrierung");
} on HTTPException catch (error) {
print("Gefangen");
var message = "Authentifizierung fehlgeschlagen";
if (error.toString().contains('EMAIL_EXISTS')) {
message = "E-Mail Adresse wird bereits verwendet";
}
if (error.toString().contains('INVALID_EMAIL')) {
message = "Ungültige E-Mail Adresse";
}
if (error.toString().contains('WEAK_PASSWORD')) {
message = "Schwaches Passwort";
}
if (error.toString().contains('EMAIL_NOT_FOUND')) {
message = "E-Mail Adresse nicht gefunden";
}
if (error.toString().contains('INVALID_PASSWORD')) {
message = "Falsches Passwort";
}
_showError(message);
} catch (error) {}
if (_isLoading) {
CircularProgressIndicator();
}
setState(() {
_isLoading = false;
});
}
【问题讨论】:
标签: firebase flutter authentication exception