0

我正在使用 Cubit 来开发我的平台。我有一个自定义表单来编辑记录。

所有的 TextFormFields 都会收到一个初始值。

我的问题是当用户完成编辑每个 TextFormField 时,我需要更新我的肘部的状态。

我不能使用 onChanged 因为每次更新状态时 TextFormField 都会失去焦点。

我不能使用 onSaved 因为它只是更新最后一个 TextFormField 的值,因为状态是如何更新的。它需要在编辑每个字段后更新,而不是在编辑所有字段后更新。

我的最后一个选项是使用 onFieldSubmitted,因为它会在用户停止编辑每个字段时运行。它仅在用户按 ENTER 时运行,但我需要在失去焦点时运行它。

如果您认为代码会有所帮助,请告诉我,我会添加它。

更新

问题不在于状态变化。

我正在使用 Stepper 小部件,并且步数会根据某些输入而变化。

当它改变时,我得到这个错误“widget.steps.length == oldWidget.steps.length”来解决它我每次调用它时都给它一个随机键。

正因为如此,焦点就失去了。

4

1 回答 1

1

您可以通过使用 Focus 小部件包装 TextFormFields 来捕捉焦点丢失。

'onFocusChange' 捕获 TextFormField 的焦点丢失。

        Focus(
          onFocusChange: (hasFocus) {
            print('$hasFocus');
            // Todo Something
          },
          child: TextFormField(
            onFieldSubmitted: (input) {
              print('onFieldSubmitted: $input');
            },
          ),
          
        )
于 2021-08-24T16:37:38.467 回答