TextField在与TextEditingController交互后丢失值

问题描述 投票:1回答:1

当我向TextFormField添加TextEditingController时,文本字段的值在与其交互后被重置/删除。

在代码示例中,我删除了不必要的小部件(用于较短的问题):

Widget build(BuildContext context) {
final usernameTextEditController = TextEditingController();
final passwordTextEditController = TextEditingController();
final confirmPasswordTextEditController = TextEditingController();
//...
                TextFormField(
                  validator: InputValidator.inputUsernameValidate,
                  controller: usernameTextEditController,
                  decoration: InputDecoration(
                    labelText: 'Your user name.',
                  ),
                ),

                TextFormField(
                  controller: passwordTextEditController,
                  validator: InputValidator.inputPasswordValidate,
                  decoration: InputDecoration(
                    labelText: 'Your password',
                  ),
                  obscureText: true,
                ),

                TextFormField(
                  controller: confirmPasswordTextEditController,
                  validator: InputValidator.inputPasswordValidate,
                  decoration: InputDecoration(
                    labelText: 'Confirm Password',
                  ),
                  obscureText: true,
                ),


//...
  }

TextField loses value

dart flutter
1个回答
2
投票

你的变量在build() - Function中,这个变量经常被调用,所以你的变量会一次又一次地被初始化(=“重置”)

将它们移动到类build() - 函数所在,应该解决该问题。

有关build()及其调用原因和时间的详细信息,请参阅文档。 build method

© www.soinside.com 2019 - 2024. All rights reserved.