我必须为每个文本字段分配一个 TextEditingController 吗?扑

Vin*_*nzo 2 textfield flutter

我正在将 Swift 应用程序移植到 Flutter,并且有各种用于时间输入的文本字段,因此为了让用户只能输入有效时间,我使用 Bloc 来验证它。基本上,在每次输入时,我都会在文本字段的 onChanged 回调中使用字符串和文本字段的 TextEditingController发送一个ValidateText()事件。OpeningTimesBloc

onChanged: (String value) {
                  print('textfield 1 onChanged: called');
                  BlocProvider.of(context)
                      .add(ValidatedText(text: value, controller: monMorOp));
                },
Run Code Online (Sandbox Code Playgroud)

OpeningTimesBloc进行验证并使用经过验证的字符串生成一个状态。在OpeningTimesScreens中BlocListener,我获取并使用新值。现在我的麻烦是我有 28 个文本字段,因为我有TextEditingController monMorOp每个工作日的早上和下午的开放和关闭时间(例如:周一早上开放)和下午的关闭时间。

我是否需要 28 个 TextEditingController 并对以下中的每个控制器进行状态检查BlocListener

if (state is ValidatedTextMonMorOp) {
            setState(() {
              monMorOp.controller.text = state.text;
            });

          }
Run Code Online (Sandbox Code Playgroud)

或者我怎样才能只传递一个引用,它将引导焦点所在的文本字段?也许是这样的?

if (state is ValidatedText) {
            setState(() {
              state.controller.text = state.text;
            });

          }
Run Code Online (Sandbox Code Playgroud)

一如既往,非常感谢您的时间和帮助。

Vir*_*iya 5

您必须为每个控制器创建一个单独的控制器TextFormField,因为如果您使用相同的控制器,则无法区分哪个TextFormField发送哪个数据。

注意:不要忘记处理所有控制器,否则您将收到内存泄漏警告。