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

