flutter - Flutter - 仅在 TextField 失去焦点时验证 TextFormField
问题描述
我有一个关于验证文本表单字段的问题。
有没有办法TextFormField
只在失去焦点时才验证 a 的值?
当焦点改变时,我想调用一个 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;
},
)
推荐阅读
- javascript - 从导出到 excel 中排除隐藏的列名和相应的 colmodel
- ruby-on-rails-5 - 如何找到问题所在的文件
- python - 在 Pandas 中分配 NaN 不粘?
- laravel - throw new InvalidArgumentException("查看 [admin.product.edit_product] 找到。");
- javascript - 在类组件的方法中获取查询
- php - 使用 JWT 流明请求 GET 类会话时的增量数
- javascript - 每个块的本地存储设置项
我的网站上有这个 contenteditable 表。
<table> <tr class="top"> <th></th> <th>Monday</th> <th>Tuesday</th> <th class
- azure-devops - 从 Azure DevOps 运行时 Postman 测试挂起
- swift - 如何按字母顺序在 UIPickerView 中显示 JSON 数组?
- autodesk-viewer - 查看器中不包含 Autodesk Revit 纹理