gpt4 book ai didi

flutter - 使用 regEx 的表单验证在 flutter 中不起作用

转载 作者:IT王子 更新时间:2023-10-29 07:17:08 26 4
gpt4 key购买 nike

我在登录屏幕上工作,我想为它制作基本的正则表达式。

我正在使用来自 BeautyTextField 的自定义 UI 元素库

这是我的电子邮件和密码输入小部件

  Widget emailInput(){
return BeautyTextfield(
validator: (value)=>RegExp(r"^[a-zA-Z0-9.]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(email)?"Enter Valid Email":null,
decoration: InputDecoration(labelText:"Email"),
cornerRadius: BorderRadius.all(Radius.circular(50)),
width: double.maxFinite,
height: 50,
duration: Duration(milliseconds: 300),
inputType: TextInputType.emailAddress,
keyboardType: TextInputType.emailAddress,
prefixIcon: Icon(Icons.alternate_email),
placeholder: "Email",
onSaved: (value)=> email = value,
fontFamily: "Muli",
); }

Widget passwordInput(){
return BeautyTextfield(
validator: (value)=> value.length == 6 ? "Enter Password of 6 Numbers":null,
cornerRadius: BorderRadius.all(Radius.circular(50)),
width: double.maxFinite,
height: 50,
duration: Duration(milliseconds: 300),
inputType: TextInputType.text,
prefixIcon: Icon(Icons.lock_outline),
obscureText: true,
placeholder: "Password",
onSaved: (value)=> password = value,

);
}

和我的表单小部件:

Widget build(BuildContext context) {
// Build a Form widget using the _formKey created above.
return Form(
/////////////////////////////////////////////////////////////
/// Form Body

key: signINformKey,
child:
Column(
children: <Widget>[
emailInput(),
passwordInput(),
submitButton(),
signUpButton(),
],
),

);}

如果数据与 regEx 匹配,我在按下登录按钮时使用此功能,因此它将重定向到另一个页面,否则它应该显示一个带有消息“登录错误”的 snackbar ,但它不起作用并且每次我点击登录按钮时,即使正则表达式不匹配,它也会重定向到另一个页面,因为 signINformKey.currentState.validate() 总是返回 true

最佳答案

实际上,如果字符串满足正则表达式,hasMatch() 函数将返回 true。您为 validator 准备的代码始终返回 null,因为电子邮件字符串与正则表达式不匹配,这就是您被定向到下一页而不是显示 Snackbar 的原因。您可以在正则表达式之前添加 ! 这将反转结果。

代码:

validator: !RegExp(r"^[a-zA-Z0-9.]+@[a-zA-Z0-9]+\.[a-zA-Z]+").hasMatch(email)?"Enter Valid Email":null

关于flutter - 使用 regEx 的表单验证在 flutter 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57027502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com