问题描述
我在 TextFormField 中使用 TextFormField
作为小部件和 TextEditingController
作为电话号码,我试图在使用 Flutter_libphonenumber
库键入时验证数字,该库提供了一个用于验证的异步函数。
我正在尝试根据输入时的验证状态更改文本的颜色。
当前状态:
- 实现了
TextFormField
并将其TextEditingController
作为具有有效初始文本的控制器提供。 - 已实现
onFieldSubmitted
,点击键盘的“完成”按钮即可正常工作。 - 将
listener
添加到此控制器以进行验证并在那里设置 _isValid bool。 - 我在构建控制器时使用了这个布尔值来设置控制器内文本的颜色。
- 所以当前的问题是,当我输入文本时,我在侦听器中获得了正确的验证状态,但文本的颜色没有相应地改变。
我知道这是因为验证后没有调用 setState
,所以它会重建小部件并根据 _isValid 更改颜色。
错误:当我在 setState
中尝试 listener
时,它只是不允许编辑。
注意:我已经使用 onChanged
方法尝试了相同的方法,它也有相同的效果,如果有预先填充的文本({{1} }).
谁能帮我解决这个问题,或者指导正确的路径?
谢谢!
解决方法
您可以通过执行以下操作来使用表单小部件的自动验证字段
Form(
autovalidate: true