如果Firebase用户中存在相同的电子邮件,如何在电子邮件表单字段上显示错误

时间:2019-07-10 10:07:17

标签: firebase flutter dart firebase-authentication

我有一个带有电子邮件TextFormField的表单,我正在验证他们的用户输入数据,然后进行注册,并相应地显示错误,因为所有字段均有效,并使用firebase调用函数进行注册,并且如果用户中存在相同的电子邮件,它会给我错误“ ERROR_EMAIL_ALREADY_IN_USE”,我只想在电子邮件TextFormField下面显示此电子邮件已在使用中的错误。

onPressed: () {
    if (_formKey.currentState.validate()) {
        print('form is valid');
        AuthService()
            .signUp(emailController.text,
                passwordFirstField.text).catchError((err) => {

            })
            .then((userId) {
                AuthService().signUpAsAClient(
                    userId, usernameController.text);
            });
        Navigator.of(context).pushNamed(
            '/professionals_list',
        );
    } else {
        print('form is not valid');
    }
}

需要显示错误消息,表明Firebase已经在使用该电子邮件。

1 个答案:

答案 0 :(得分:0)

在这样的小部件的上定义String变量

String _errorEmail;

这是文本字段的代码

TextField(
                        controller: _tecEmail,
                        style: TextStyle(color: Colors.white, fontSize: 18.0),
                        decoration: InputDecoration(
                            errorText: _errorEmail,
                            errorStyle:
                                TextStyle(color: Colors.red, fontSize: 14.0),
                            labelText: "Email Address",
                            labelStyle: TextStyle(
                                fontSize: 18.0, color: Colors.white70),
                            enabledBorder: UnderlineInputBorder(
                                borderSide: BorderSide(color: Colors.white)),
                            focusedBorder: UnderlineInputBorder(
                              borderSide:
                                  BorderSide(color: Constants.appThemeColor),
                            ),
                            contentPadding: const EdgeInsets.only(
                                left: 10, right: 10, top: 10, bottom: 10)),
                        keyboardType: TextInputType.emailAddress,
                      ),

如果通过电子邮件发送的邮件已经存在,则添加错误消息

setState(() {
      if (//condition or check if email exist) {
      _errorEmail = "emailid already exist";
      return;
    }
    _errorEmail = null;
    });