Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 如果Flatter登录表单中的密码或用户电子邮件错误,则返回错误消息_Firebase_Flutter_Dart_Firebase Authentication - Fatal编程技术网

Firebase 如果Flatter登录表单中的密码或用户电子邮件错误,则返回错误消息

Firebase 如果Flatter登录表单中的密码或用户电子邮件错误,则返回错误消息,firebase,flutter,dart,firebase-authentication,Firebase,Flutter,Dart,Firebase Authentication,我已经将Flatter连接到我的firebase项目,并在firebase中使用了AUTH功能,但我要做的是在错误的密码或电子邮件用户出错时显示错误消息。 这是我的代码: Widget submitButton (){ return Container( child: SizedBox( width: 220, height: 40, child: MaterialButton( elevation: 5,

我已经将Flatter连接到我的firebase项目,并在firebase中使用了AUTH功能,但我要做的是在错误的密码或电子邮件用户出错时显示错误消息。 这是我的代码:

Widget submitButton (){
    return Container(
      child: SizedBox(
        width: 220,
        height: 40,
        child: MaterialButton(
          elevation: 5,
          onPressed: () async {
            setState(() {
              showProgress = true;
            });

            try {
              final newUser = await _auth.signInWithEmailAndPassword(email: email, password: password);
              print(newUser.toString());
              if (newUser != null) {
                Navigator.push(context, PageTransition(
                  type: PageTransitionType.fade,
                  child: WelcomeScreen(),
                ));
                setState(() {
                  showProgress = false;
                });

              }
            } catch (e) {}
          },
          child: Text('Accedi',style: TextStyle(color: Colors.black),),
          color: Colors.white,
          shape: RoundedRectangleBorder(
              borderRadius: BorderRadius.circular(8),
              side: BorderSide(color: Colors.black12,width: 1)),
        ),

      ),
    );
  }
您有两个选择:

1.使用警报对话框

void\u showAlertDialogString消息异步{ 显示对话框 上下文:上下文, 生成器:BuildContext上下文{ 返回警报对话框 标题:短信, 行动:[ 扁平按钮 孩子:文本“Ok”, 按下按钮:{ Navigator.ofcontext.pop; }, , ], ; }, ; } 在InputDecoration中使用errorText属性 文本字段 装饰:输入装饰 errorText:this.errorText, , 您有两个选择:

1.使用警报对话框

void\u showAlertDialogString消息异步{ 显示对话框 上下文:上下文, 生成器:BuildContext上下文{ 返回警报对话框 标题:短信, 行动:[ 扁平按钮 孩子:文本“Ok”, 按下按钮:{ Navigator.ofcontext.pop; }, , ], ; }, ; } 在InputDecoration中使用errorText属性 文本字段 装饰:输入装饰 errorText:this.errorText, ,
首先,您需要捕获错误,可以使用catchError:


然后,showDialog将显示err.message,其中将包含从Firebase身份验证收到的错误。

首先,您需要捕获错误,可以使用catchError:


然后,showDialog将显示err.message,其中将包含从Firebase身份验证收到的错误。

您可以将表单与TextFormField一起使用

大概是这样的:

Form(
        key: _formKey,
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            TextFormField(
              key: ValueKey('email'),
              validator: (value) {
                if (value.isEmpty || !value.contains('@'))
                  return 'Please enter a valid Email address';
                return null;
              },
              keyboardType: TextInputType.emailAddress,
              decoration: InputDecoration(labelText: 'Email address'),
              onSaved: (value) {
                _userEmail = value;
              },
            ),
获取isValid的方法将调用所有TextFormFields的验证函数,如果它们都正常,它将返回true,否则将返回false

所有_名称都用于使用onSaved属性将值存储在状态变量中

如果你还有疑问,请告诉我


希望这有帮助✌

您可以将表单与TextFormField一起使用

大概是这样的:

Form(
        key: _formKey,
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            TextFormField(
              key: ValueKey('email'),
              validator: (value) {
                if (value.isEmpty || !value.contains('@'))
                  return 'Please enter a valid Email address';
                return null;
              },
              keyboardType: TextInputType.emailAddress,
              decoration: InputDecoration(labelText: 'Email address'),
              onSaved: (value) {
                _userEmail = value;
              },
            ),
获取isValid的方法将调用所有TextFormFields的验证函数,如果它们都正常,它将返回true,否则将返回false

所有_名称都用于使用onSaved属性将值存储在状态变量中

如果你还有疑问,请告诉我


希望这有帮助✌

尝试使用带有TextFormField的表单,你能更具体一些吗?请查看我提交的答案,希望能有所帮助。尝试使用带有TextFormField的表单,你能更具体一些吗?请查看我提交的答案,希望能有所帮助。您好,谢谢。用户单击“确定”后如何清空字段并返回提示?您需要使用TextFormField,然后执行myController.text=;。检查一下食谱,很好,我看到它会在alertDialog中显示数据。我想要的是,一旦我点击重试,返回到我想要的表单,清理登录表单字段。当你点击确定时,弹出警报对话框,然后你所要做的就是清空字段,检查我在commentsHello中添加的链接谢谢,以及如何在用户单击“确定”后清空字段并返回到提示?您需要使用TextFormField,然后执行myController.text=;。检查一下食谱,很好,我看到它会在alertDialog中显示数据。我想要的是,一旦我点击重试,返回到我想要的表单,清理登录表单字段。当你点击ok时,alertdialog弹出,然后你所要做的就是清空字段,检查我在评论中添加的链接
void _trySubmit() {
final bool isValid = _formKey.currentState.validate();
FocusScope.of(context).unfocus();

if (isValid) {
  _formKey.currentState.save();
  widget.submitFn(
    _userEmail.trim(),
    _userName.trim(),
    _userPassword.trim(),
    _isLogin,
    context,
  );
}}