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

Flutter中DropdownButtonFormField onChange异常:学生班级显示错误

问题解决:编辑学生时下拉框未正确加载对应班级

问题原因

点击编辑按钮时,仅更新了姓名和年龄输入框的内容,但未将_selectedClass赋值为当前学生的studentClass值,导致下拉框始终显示默认的SIO1。

修复步骤

在编辑按钮的点击回调中,添加对_selectedClass的赋值操作:

IconButton(
  icon: const Icon(Icons.edit),
  onPressed: () {
    setState(() {
      _isUpdating = true;
      _selectedPersonId = person.id;
      _nameController.text = person.name;
      _ageController.text = person.age.toString();
      // 新增:将选中学生的班级赋值给下拉框绑定变量
      _selectedClass = person.studentClass;
    });
  },
),

修改后的完整关键代码片段

以下是更新后的ListView.builder中ListTile的完整代码:

return ListTile(
  title: Text(person.name),
  subtitle: Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: [
      Text('Age: ${person.age}'),
      Text('Classe: ${person.studentClass}'),
    ],
  ),
  trailing: Row(
    mainAxisSize: MainAxisSize.min,
    children: [
      IconButton(
        icon: const Icon(Icons.edit),
        onPressed: () {
          setState(() {
            _isUpdating = true;
            _selectedPersonId = person.id;
            _nameController.text = person.name;
            _ageController.text = person.age.toString();
            // 修复:加载学生的对应班级到下拉框
            _selectedClass = person.studentClass;
          });
        },
      ),
      IconButton(
        icon: const Icon(Icons.delete),
        onPressed: () async {
          await _personController.deletePerson(context, person.id);
          setState(() {});
        },
      ),
    ],
  ),
);

额外注意事项

  • 确保Person模型中studentClass字段的值与下拉框选项(SIO1、SIO2)完全一致,避免因大小写或拼写差异导致下拉框无法匹配正确值。
  • 若后续需扩展更多班级,建议将班级列表抽为常量,避免硬编码,保证数据一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 00:52:51