dart 如何在Flutter中删除文本表单字段中的验证警告?

zte4gxcn  于 2023-07-31  发布在  Flutter
关注(0)|答案(2)|浏览(206)

我有两个文本表单字段内的一个表单在Flutter。我已经添加了验证器来警告无效值。但我希望在用户再次开始键入时隐藏警告。
如何隐藏这些警告?

的数据
我以为我可以使用onTap或onChanged功能来实现这一点,但我想不出一种方法来实现这一点。

xesrikrc

xesrikrc1#

TextFormField具有focusNode属性。当用户编辑TextFormField时,与该字段关联的FocusNode将具有输入焦点。您可以通过节点的hasFocus属性查询FocusNode的状态。
因此,为每个TextFormField创建并传递一个FocusNode,然后在验证器函数中查询相关节点的状态。
例如,电子邮件TextFormField的代码应该如下所示:

final emailNode = FocusNode();
...

TextFormField(
  focusNode: emailNode,
  validator: (value) {
    ...
    else if(widget.inputType == InputType.email &&
      !Validation.isValidEmail(value) &&
      !emailNode.hasFocus){
        return 'Please enter a valid email!;
      }
    },
  ),

字符串
这样,当用户点击电子邮件字段并开始输入新值时,电子邮件字段将具有焦点,因此验证器中的最后一个条件将是false,因此错误消息将消失。当用户点击密码字段时,电子邮件字段将失去焦点,因此!emailNode.hasFocus将为true,并且如果电子邮件字段中的值不是有效的电子邮件地址,则电子邮件字段下的错误消息将重新出现。
P.S.下次请贴代码而不是截图。

2skhul33

2skhul332#

尝试将小部件的autoValidationMode设置为onUserInteraction:

autovalidateMode:AutovalidateMode.onUserInteraction,

字符串

相关问题