我知道这是一个简单的问题,但我没有找到如何做到这一点。当用户在字段中输入内容时,如何重置 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(),
),
);
Run Code Online (Sandbox Code Playgroud)
更新:我正在使用控制器为用户输入添加侦听器。但我只想重置错误消息而不是再次验证表单。这可能吗?我怎样才能做到这一点?
_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);
}
Run Code Online (Sandbox Code Playgroud)
Ank*_*dik 12
您可以使用自动验证功能 Form
如果您正在寻找此解决方案,
“只要您输入它就会验证您的输入并显示/隐藏错误”
Flutter 提供了自动验证功能,你只需要在表单级别启用它。
默认
_autoValidate = false;
形式
body: Form( key: _formKey,
autovalidate: _autoValidate,....)
Run Code Online (Sandbox Code Playgroud)
if (_formKey.currentState.validate()) {
// All Good
} else {
// start auto validate
setState(() {
_autoValidate = true;
});
}
Run Code Online (Sandbox Code Playgroud)
现在Form.autovalidate已弃用。所以使用
Form.autovalidateMode = AutovalidateMode.onUserInteraction
Run Code Online (Sandbox Code Playgroud)
Form.autovalidate已被弃用。用于Form.autovalidateMode = AutovalidateMode.onUserInteraction在用户再次开始与表单字段交互时自动清除错误,而无需自己管理任何状态。
| 归档时间: |
|
| 查看次数: |
6654 次 |
| 最近记录: |