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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 22:06:02