setState阻止编辑TextEditingController



我使用TextFormField作为小部件,并在TextFormField中使用TextEditingController作为电话号码,我试图在使用flutter_libphonenumber库键入时验证号码,该库提供了一个异步验证功能。我正在尝试根据输入时的验证状态更改文本的颜色。

当前状态:

  1. 实现了TextFormField,并将其作为具有有效初始文本的控制器提供给TextEditingController
  2. 实现了onFieldSubmitted,点击键盘上的"完成"按钮即可正常工作
  3. listener添加到此控制器进行验证,并在那里设置_isValid布尔
  4. 我用这个bool在构建控制器时设置了控制器内文本的颜色
  5. 因此,当前的问题是,当我输入文本时,我会在听众中获得适当的验证状态,但文本的颜色不会相应地改变

我知道这是由于在验证后没有调用setState,所以它将重建小部件并根据_isValid更改颜色。

错误:当我尝试在listener中使用setState时,它不允许编辑。

注意:我使用onChanged方法尝试了同样的方法,它也做了同样的事情,如果有预先填充的文本(initialText(,就不能在textField中输入或删除任何内容。

有人能帮我解决这个问题,或者指引正确的道路吗?

谢谢!

您可以通过执行来使用Form小部件的自动验证字段

Form(
autovalidate: true

相关内容

  • 没有找到相关文章

最新更新