情况如下:
我有一个TextFormField
和一个FlatButton
。我只想在FlatButton
有效时启用TextFormField
,并且我想在键入每个字符后检查验证。
我正在将Form
与GlobalKey
一起使用。我尝试使用onChanged
,并且传递给回调函数的值是正确的,但是由于某些原因,运行$_globalKey.currentState.validate()
时发生的验证始终落后一个字符。因此,实际上非常简单,我仅验证字符串是否为空。当它实际上为空时(删除最后一个字符后),validate()
返回true
,但键入一个字符后返回false
。
使用autovalidate
并且仅用于验证部分,但是我不知道如何将启用按钮附加到该部分。有谁知道在这种情况下如何使验证“正确”运行?谢谢!
答案 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;
});
});