sendPasswortResetEmail与createUserWithEmailAndPassword相同的错误处理

时间:2020-06-26 16:16:07

标签: firebase flutter dart firebase-authentication

您好,我现在正在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

0 个答案:

没有答案