我有一个关于验证文本表单字段的问题。
是否只有在失去焦点时才验证TextFormField
的值的方法?
我想调用一个API来检查更改焦点时用户名是否已存在于数据库中。如果我在autoValidate
中将TextFormField
设置为true,则每次用户按下某个键时,它将进行验证。因此,如果用户名包含20个字符,它将调用我的API 20次。因此,为了消除开销,我只想在焦点更改时调用API。
最佳答案
您可以将focusNode附加到TextField
,以便每当焦点更改时,您都可以进行api调用并验证文本。在类尝试一下
FocusNode focusNode;
bool _hasInputError;
String text;
@override
void initState() {
super.initState();
focusNode = new FocusNode();
focusNode.addListener(() {
if (!focusNode.hasFocus) {
setState(() {
_hasInputErro = //Check your conditions on text variable
});
}
});
}
然后在
TextField
中执行此操作TextField(
focusNode: _focusNode,
decoration: InputDecoration(
errorText: _hasInputError ? "Your error message" : null,
),
onChanged: (String _text) {
text = _text;
},
)
关于flutter - Flutter-仅当TextField失去焦点时才验证TextFormField,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59376676/