Flutter中如何使用TextEditingController传递Dropdown选中项
解决方案
DropdownButton本身不直接支持绑定TextEditingController,你只需要在下拉选项变化的回调中,手动把选中值同步到TextEditingController的text属性即可,无需额外改造组件。
调整后的核心代码
TextEditingController _name = TextEditingController(); String? valueChoose; List listItem = ["A", "B", "C", "D"]; DropdownButton<String>( underline: SizedBox(), hint: Text('Example'), dropdownColor: Colors.white, isExpanded: true, icon: Icon(Icons.arrow_drop_down), iconSize: 40.0, value: valueChoose, onChanged: (String? newValue) { setState(() { valueChoose = newValue!; // 新增此行,将选中值同步到TextEditingController _name.text = newValue; }); }, items: listItem.map<DropdownMenuItem<String>>((valueItem){ return DropdownMenuItem( value: valueItem, child: Text(valueItem), ); }).toList(), )
跨页面传值操作
- 你可以直接通过
_name.text拿到当前下拉框选中的最新值 - 跳转页面时将值作为参数传入目标页面即可,示例如下:
// 跳转逻辑示例 Navigator.push( context, MaterialPageRoute( builder: (context) => TargetPage(selectedOption: _name.text), ), );
如果你不需要统一用TextEditingController管理表单值,也可以直接用已有的valueChoose变量传值,效果完全一致。
内容的提问来源于stack exchange,提问作者yamini r
相关产品推荐
相关产品推荐

