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
相关产品推荐
相关产品推荐

