当文本表单字段的值发生变化时,如何自动验证?
我试过
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现在可以在最新的稳定频道上使用。如果它能解决你的问题,请告诉我。
我认为,
TextFormField(
autovalidateMode: AutovalidateMode.onUserInteraction,
)
是解决这个问题的最佳方法。