Firebase 如果Flatter登录表单中的密码或用户电子邮件错误,则返回错误消息
我已经将Flatter连接到我的firebase项目,并在firebase中使用了AUTH功能,但我要做的是在错误的密码或电子邮件用户出错时显示错误消息。 这是我的代码: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,
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,
);
}}