我正在开发使用Firebase,Flutter和vscode的登录系统。

我想知道如何处理Firebase生成的异常。
如果EMAIL已经注册。

当前生成错误:

Exception has occurred.
PlatformException (PlatformException(ERROR_EMAIL_ALREADY_IN_USE, The email address is already in use by another account., null))

如果电子邮件已经注册,我想通知用户。

码:
Future<void> signUp({@required Map<String, dynamic> userData,@required String pass,@required VoidCallback onSuccess,@required VoidCallback onFail}) async{
    isLoading = true;
    notifyListeners();

    _auth.createUserWithEmailAndPassword(
      email: userData["email"],
      password: pass
    ).then((user) async{
      firebaseUser = user;
      await _saveUserData(userData);
      onSuccess();
      isLoading = false;
      notifyListeners();
    }).catchError((e){

      print(e);
      onFail();
      isLoading = false;
      notifyListeners();
    });

  }

最佳答案

如果要在发出ERROR_EMAIL_ALREADY_IN_USE时执行后续操作。

我认为捕获PlatformException并使用code分支该过程是一个好主意,如下所示。

try {
  final result = await _auth.createUserWithEmailAndPassword(
      email: email,
      password: password,
  );
} on PlatformException catch (exception) {
  switch (exception.code) {
  case 'ERROR_EMAIL_ALREADY_IN_USE':
    // do something...
  default:
    break;
}

10-01 21:20
查看更多