forms - 如何验证值更改的文本字段?
问题描述
如何在其值更改时自动验证文本表单字段?
我试过了
bool _autoValidate = false;
TextFormField(
autovalidate: _autoValidate ,
onChanged: (value) {
setState(() {
_autoValidate = true;
});
},
validator: (value) {
if (value.length < 5) {
return 'False';
} else {
return 'True';
}
},
),
但不起作用,TextFormField
仍然没有显示验证错误。
我需要一种方法来打开对文本更改的验证。
解决方案
Flutter 现在有一个 API,可以仅在内容更改时验证表单字段。您只需要使用autovalidateMode
参数并将其设置为AutovalidateMode.onUserInteraction
.
以下文本字段仅在用户更改其内容时才会生效:
class HomeScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: TextFormField(
autovalidateMode: AutovalidateMode.onUserInteraction,
),
),
);
}
}
有关何时验证的更多选项,请参阅AutovalidateMode文档。
此 API 现在可在最新的稳定频道上使用。让我知道它是否能解决您的问题。
推荐阅读
- javascript - 如何过滤具有两级嵌套的对象数组?
- c++ - 元素 'xsl:stylesheet' 已使用但未在 DTD/Schema 中声明
- javascript - fakeAsync() 需要 zone-testing.js
- python - 使用 pandas 合并列和行
- django - Django 上传和读取 vcard 对象 - 让我失去理智
- python - 数据框清洗
- python - 尝试比较数组但得到“ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()”
- python-3.x - 如何将列表拆分为每个最小大小的相等块?
- sass - 如何@use scss 与地图变量
- javascript - 音乐机器人未连接到语音频道