颤振等效于按键验证中的字符串

时间:2020-06-08 11:49:30

标签: forms validation flutter textfield

情况如下:

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

我正在将FormGlobalKey一起使用。我尝试使用onChanged,并且传递给回调函数的值是正确的,但是由于某些原因,运行$_globalKey.currentState.validate()时发生的验证始终落后一个字符。因此,实际上非常简单,我仅验证字符串是否为空。当它实际上为空时(删除最后一个字符后),validate()返回true,但键入一个字符后返回false

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

1 个答案:

答案 0 :(得分:0)

创建表单密钥

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

在此代码添加到添加侦听器之后。

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

这是您的听众

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

        else 
            isValid = false;
    });
});