我使用TextFormField
作为小部件,并在TextFormField中使用TextEditingController
作为电话号码,我试图在使用flutter_libphonenumber
库键入时验证号码,该库提供了一个异步验证功能。我正在尝试根据输入时的验证状态更改文本的颜色。
当前状态:
- 实现了
TextFormField
,并将其作为具有有效初始文本的控制器提供给TextEditingController
- 实现了
onFieldSubmitted
,点击键盘上的"完成"按钮即可正常工作 - 将
listener
添加到此控制器进行验证,并在那里设置_isValid布尔 - 我用这个bool在构建控制器时设置了控制器内文本的颜色
- 因此,当前的问题是,当我输入文本时,我会在听众中获得适当的验证状态,但文本的颜色不会相应地改变
我知道这是由于在验证后没有调用setState
,所以它将重建小部件并根据_isValid更改颜色。
错误:当我尝试在listener
中使用setState
时,它不允许编辑。
注意:我使用onChanged
方法尝试了同样的方法,它也做了同样的事情,如果有预先填充的文本(initialText
(,就不能在textField中输入或删除任何内容。
有人能帮我解决这个问题,或者指引正确的道路吗?
谢谢!
您可以通过执行来使用Form小部件的自动验证字段
Form(
autovalidate: true