0

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

当前状态:

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

我知道这是由于setState验证后未调用而发生的,因此它将重建小部件并根据 _isValid 更改颜色。

错误:当我尝试在setState里面时listener,它只是不允许编辑。

注意:我已经尝试过使用onChangedmethod 的相同方法,它也一样,如果有预填充的文本 ( initialText),则无法在 textField 中输入或删除任何内容。

谁能帮我解决这个问题,或指导正确的路径?

谢谢!

4

1 回答 1

0

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

Form(
 autovalidate: true
于 2021-03-15T11:17:40.490 回答