您好,我现在正在ErrorErrorling上工作并显示在我的Form小部件中。我想在UI Form Widget中显示我在ErrorHandler类中返回的文本,这就是为什么我尝试返回Future的原因。这是我发送电子邮件的代码:
Future<String> sendPasswordResetEmail(String email) async {
try {
await _auth.sendPasswordResetEmail(email: email);
return "";
} catch(error){
ErrorHandler errorHandler = ErrorHandler(errorCode: error.toString());
return errorHandler.checkError();
}
}
创建用户的方法是
Future<String> registerWithEmailAndPassword(String _username, String _email, String _password) async {
FirebaseUser newUser;
try{
newUser = (await _auth.createUserWithEmailAndPassword(email: _email, password: _password)).user;
UserUpdateInfo updateInfo = UserUpdateInfo();
updateInfo.displayName = _username;
updateFirebaseUserInfo(updateInfo).whenComplete(() => sendEmailVerification());
} catch (error){
print(error.toString());
ErrorHandler errorHandler = ErrorHandler(errorCode: error.code);
return errorHandler.checkError();
}
return newUser.uid;
}
正如您在sendPasswordResetEmail方法中看到的那样,我在我的ErrorHandler类中使用普通的error.toString,因为我无法在以下方法中访问error.code
变量。但是我基本上想在sendPasswordResetEmail方法中捕获的错误类型是网络连接,ERROR_INVALID_EMAIL和ERROR_USER_NOT_FOUND。
我的ErrorHandler类几乎只切换所有字符串的大小写,这样我的方法就不会变得太大:
class ErrorHandler{
final String errorCode;
ErrorHandler({
@required this.errorCode
});
String checkError(){
switch(this.errorCode){
//Register Errors
case "ERROR_INVALID_EMAIL":
return "Deine angebene Email scheint fehlerhaft zu sein.";
case "ERROR_WRONG_PASSWORD":
return "Dein Passwort für deinen Account scheint fehlerhaft zu sein.";
case "ERROR_EMAIL_ALREADY_EXISTS":
return "Es gibt schon einen Account mit dieser Email.";
case "ERROR_USER_NOT_FOUND":
return "Wir konnten keinen Benutzer mit der angegebenen Email finden.";
case "ERROR_NETWORK_REQUEST_FAILED":
return "Stelle sicher, dass du eine aktive Internetverbindung hast.";
default:
return errorCode;
}
}
}
希望大家能帮助我找到在注册,注册,重置密码和更改电子邮件时使用相同错误处理的解决方案(:ty