【问题标题】:Flutter equivalent of string validation on key up颤振等效于键上的字符串验证
【发布时间】:2020-06-08 11:49:30
【问题描述】:

场景如下:

我有一个TextFormField 和一个FlatButton。我只想在TextFormField 有效时启用FlatButton,并且我想在输入每个字符后检查验证。

我正在使用 FormGlobalKey。我尝试过使用onChanged,并且传递给回调函数的值是正确的,但由于某种原因,当我运行$_globalKey.currentState.validate() 时发生的验证总是落后一个字符。所以为了让它变得非常简单,我只验证字符串是否为空。当它实际上为空时(删除最后一个字符后)validate() 返回true,但在输入一个字符后返回false

使用autovalidate 并且仅用于验证部分,但我不知道如何将按钮的启用附加到该部分。有谁知道如何让验证在这种情况下“正确”工作?谢谢!

【问题讨论】:

  • 你可以用addListener。请检查此链接,stackoverflow.com/a/59652569/12716244
  • 感谢@FarukAYDIN 的链接。只是为了确认,没有办法将其与字段本身的 validator 属性联系起来?只需要编写一个单独的函数吗?我知道我可以使用一个单独的函数并在两个地方调用,但除此之外没有办法?

标签: forms validation flutter textfield


【解决方案1】:

为表单创建一个键

final GlobalKey<FormState> _formKey = GlobalKey<FormState>();

在添加到 addlistener 之后这个代码。

if (!_formKey.currentState.validate()) 
{
    return;
}

这是你的听众

myController.addListener((){
    setState(() {
        if(_isValidText(myController.text) && _formKey.currentState.validate()) 
            isValid = true;

        else 
            isValid = false;
    });
});

【讨论】:

    猜你喜欢
    • 2021-05-02
    • 2023-03-30
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 2014-03-09
    • 2021-07-02
    • 1970-01-01
    相关资源
    最近更新 更多