我正在使用 aTextFormField
作为小部件并TextEditingController
在 TextFormField 内使用电话号码,并且我正在尝试在使用库键入时验证一个数字,该flutter_libphonenumber
库提供了一个用于验证的异步函数。我正在尝试根据输入时的验证状态来更改文本的颜色。
当前状态:
- 实现
TextFormField
并将其TextEditingController
作为具有有效初始文本的控制器提供。 - 已实现
onFieldSubmitted
,点击键盘的完成按钮即可正常工作。 - 添加
listener
到此控制器以进行验证并在此处设置 _isValid bool。 - 我在构建控制器时使用这个布尔值来设置控制器内的文本颜色。
- 所以当前的问题是,当我输入文本时,我在侦听器中得到了正确的验证状态,但文本的颜色没有相应地改变。
我知道这是由于setState
验证后未调用而发生的,因此它将重建小部件并根据 _isValid 更改颜色。
错误:当我尝试在setState
里面时listener
,它只是不允许编辑。
注意:我已经尝试过使用onChanged
method 的相同方法,它也一样,如果有预填充的文本 ( initialText
),则无法在 textField 中输入或删除任何内容。
谁能帮我解决这个问题,或指导正确的路径?
谢谢!