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

Flutter表单Bug:选择单选框后TextFormField内容被清空

解决Flutter表单TextFormField选中单选按钮后内容清空的问题

核心问题是你的TextFormField没有绑定持久化的状态,每次切换单选按钮调用setState时,页面重建,输入框因为没有保存之前的输入值,直接被重置为空。下面是两种可行的解决方法:

方法一:用状态变量绑定输入值

在你的State类中添加一个变量保存输入内容,然后给TextFormField绑定initialValue和onChanged:

// 在State类中定义变量
String _headName = '';

// 修改TextFormField代码
TextFormField(
  decoration: const InputDecoration(
    enabledBorder: UnderlineInputBorder(
      borderSide: BorderSide(color: Color.fromARGB(255, 192, 77, 230)),
    ),
    hintText: "Head Name",
  ),
  initialValue: _headName,
  onChanged: (value) {
    setState(() {
      _headName = value;
    });
  },
),

方法二:使用TextEditingController(推荐复杂场景)

通过控制器直接管理输入框的内容,这种方式更灵活,适合需要主动控制输入内容的场景:

// 在State类中定义控制器
final TextEditingController _headNameController = TextEditingController();

// 修改TextFormField代码
TextFormField(
  controller: _headNameController,
  decoration: const InputDecoration(
    enabledBorder: UnderlineInputBorder(
      borderSide: BorderSide(color: Color.fromARGB(255, 192, 77, 230)),
    ),
    hintText: "Head Name",
  ),
),

// 记得在页面销毁时释放控制器资源
@override
void dispose() {
  _headNameController.dispose();
  super.dispose();
}

两种方法的原理一致:让TextFormField的内容和一个会被持久化保存的变量/控制器绑定,这样setState触发页面重建时,输入框会读取绑定的已有值,而不是清空重置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:01:45