Проверка наличия электронной почты в Firebase Auth в приложении Flutter - PullRequest
0 голосов
/ 02 апреля 2020

Это работает при регистрации по электронной почте и паролю, но когда я использую идентификатор, который уже зарегистрирован для регистрации, он не будет отображать ошибку. Вместо этого он перенаправляет на домашнюю страницу, а в консоли пишет: PlatformException(ERROR_EMAIL_ALREADY_IN_USE, The email address is already in use by another account

Future validateForm() async {
FormState formState = _formKey.currentState;
if (formState.validate()) {
  FirebaseUser user = await firebaseAuth.currentUser();
  if (user == null) {
    firebaseAuth
        .createUserWithEmailAndPassword(
            email: _emailTextController.text,
            password: _passwordTextController.text)
        .then((user) => {
              _userServices.createUser(user.user.uid, {
                "username": _nameTextController.text,
                "email": _emailTextController.text,
                "userId": user.user.uid,
                "gender": gender,
              }),
            })
        .catchError((err) {
      showDialog(
          context: context,
          builder: (BuildContext context) {
            return AlertDialog(
              title: Text("User Already Exists"),
              content: Text(err.message),
              actions: [
                FlatButton(
                  child: Text("Ok"),
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                )
              ],
            );
          });
    });
    Navigator.pushReplacement(
        context, MaterialPageRoute(builder: (context) => HomePage()));
  } else {
    return ("already a user");
  }
}

}

1 Ответ

1 голос
/ 02 апреля 2020

Вы переходите на вторую страницу, потому что у вас есть:

   Navigator.pushReplacement(
        context, MaterialPageRoute(builder: (context) => HomePage()));

После блока if. Поэтому, если user == null введет if, затем go внутри catchError, а затем перейдет к HomePage, вы должны переместить указанный выше код в else:

  } else {
  Navigator.pushReplacement(
        context, MaterialPageRoute(builder: (context) => HomePage()));
    return ("already a user");
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...