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