在验证器外部设置TextFormFieldError,可以通过以下步骤实现:
TextEditingController _controller = TextEditingController();
String _validateInput(String value) {
if (value.isEmpty) {
return '输入不能为空';
}
// 其他自定义验证逻辑
return null;
}
TextFormField(
controller: _controller,
validator: _validateInput,
onChanged: (value) {
setState(() {
_controller.text = value;
_controller.selection = TextSelection.fromPosition(
TextPosition(offset: _controller.text.length),
);
_controller.setErrorText(_validateInput(value));
});
},
// 其他属性
)
TextFormField(
// 其他属性
builder: (FormFieldState<String> state) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextFormField(
controller: _controller,
validator: _validateInput,
onChanged: (value) {
setState(() {
_controller.text = value;
_controller.selection = TextSelection.fromPosition(
TextPosition(offset: _controller.text.length),
);
_controller.setErrorText(_validateInput(value));
});
},
// 其他属性
),
if (state.hasError)
Text(
state.errorText,
style: TextStyle(color: Colors.red),
),
],
);
},
)
这样,当用户输入发生变化时,验证器函数会被调用并更新错误信息,错误信息会在TextFormField下方显示出来。如果输入有效,错误信息为null,不会显示任何错误提示。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云