我有一个关于验证文本表单字段的问题。
有没有办法TextFormField只在失去焦点时才验证 a 的值?
我想调用一个 API 来检查当焦点改变时用户名是否已经存在于我的数据库中。如果我设置autoValidate为TextFormFieldtrue,它会在用户每次按下一个键时进行验证。因此,如果用户名有 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
});
}
});
}
Run Code Online (Sandbox Code Playgroud)
并在TextField这样做
TextField(
focusNode: _focusNode,
decoration: InputDecoration(
errorText: _hasInputError ? "Your error message" : null,
),
onChanged: (String _text) {
text = _text;
},
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3648 次 |
| 最近记录: |