You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter:使用Controller为AlertDialog的TextFormField设置初始值

解决TextFormField通过Controller显示初始值的问题

你遇到的问题核心是没有将获取到的teamName赋值给TextEditingController的text属性——虽然teamName的值打印正确,但没传递给输入框的控制器,所以输入框显示为空。

解决步骤

在创建AlertDialog弹窗之前,直接给textController的text属性赋值为当前的teamName即可:

// 关键:弹窗创建前给控制器设置初始值
textController.text = teamName;

AlertDialog alert = AlertDialog(
                                      title: const Text(
                                          "Modifier le nom de votre équipe"),
                                      content: Form(
                                        key: _thekey,
                                        child: TextFormField(
                                          controller: textController,
                                          validator: (val) => val?.length == 0
                                              ? "Indiquez un nom d'équipe s'il vous plait"
                                              : null,
                                          // 此处onSaved可移除,控制器已自动同步输入内容
                                          // onSaved: (val) => textController.text = val!,
                                        ),
                                      ),
                                      actions: [
                                        ElevatedButton(
                                            onPressed: (() {
                                              teamName = textController.text;
                                              print("le nom de la teamsss est : $teamName");
                                              setState(() {
                                                print(
                                                    "le nom de l'équipe est: $teamName");
                                                updateTeam(
                                                    team.idTeam,
                                                    textController,
                                                    idCoach,
                                                    context);

                                              });
                                            }),
                                            child: const Text("Modifier"))
                                      ],
                                    );
                                    showDialog(
                                        barrierDismissible: true,
                                        context: context,
                                        builder: (BuildContext ctx) {
                                          return alert;
                                        });

补充说明

  • 如果你的textController是在State类中初始化的(比如final TextEditingController textController = TextEditingController();),每次弹窗前赋值都会覆盖之前的内容,不会有残留问题。
  • 原代码中的onSaved回调属于冗余逻辑,TextEditingController会自动同步输入框的内容,无需手动赋值。

内容的提问来源于stack exchange,提问作者zsupraz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:45:11