我知道这是一个简单的问题,但我没有找到如何做到这一点。当用户在字段中输入内容时,如何重置TextFormField中的错误消息。像onchange监听器之类的东西。我注意到onChanged在TextField中可用,但在TextFormField中不可用。我怎样才能做到这一点?
final _email = Container(
child: TextFormField(
decoration: InputDecoration(labelText: email),
keyboardType: TextInputType.emailAddress,
controller: emailController,
validator: _validateEmail,
onSaved: (input) => _stringEmail = input.toLowerCase().trim(),
),
);
更新:我正在使用 Controller 来添加监听器以供用户输入。但是我只想重置错误消息,而不是再次验证表单。这可能吗?我怎样才能做到这一点?
_resetEmailErrorMessage() {
print("Second text field: ${emailController.text}");
//replace clear to something that can reset the validation error message
emailController.clear();
}
@override
void initState() {
super.initState();
//start listening to changes
emailController.addListener(_resetEmailErrorMessage);
}
最佳答案
您可以使用Form
的自动验证功能
如果您正在寻找这种解决方案,
Flutter提供了自动验证功能,您只需要在表单级别启用它即可。
_autoValidate = false;
body: Form( key: _formKey,
autovalidate: _autoValidate,....)
if (_formKey.currentState.validate()) {
// All Good
} else {
// start auto validate
setState(() {
_autoValidate = true;
});
}
更新:-现在不建议使用
Form.autovalidate
。所以用Form.autovalidateMode = AutovalidateMode.onUserInteraction
关于flutter - 如何重置TextFormField中的错误消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57574390/