flutter - 如果我更改第一个下拉值,如何重置第二个下拉列表?
问题描述
我有两个下拉列表,第二个取决于第一个。
当我在选择第二个下拉值后更改第一个下拉值时,它会引发如下错误。
那么如果我更改第一个下拉值,如何重置第二个下拉列表?
下拉按钮如下。
DropdownButtonFormField<Standard>(
validator: (value) {
if (value == null) {
return "Select Standard";
}
},
isExpanded: true,
hint: Text('Select Standard'),
value: selectedStandard,
items: _standards.map((Standard standard) {
return DropdownMenuItem<Standard>(
value: standard,
child: Text(standard.standardName),
);
}).toList(),
onChanged: (val) {
setState(() {
selectedStandard = val;
standardId = val?.standardId;
onMediumChange(val);
});
}),
SizedBox(height: 20),
DropdownButtonFormField<Medium>(
validator: (value) {
if (value == null) {
return "Select Medium";
}
},
isExpanded: true,
hint: Text('Select Medium'),
value: selectedMedium,
items: _mediums.map((Medium medium) {
return DropdownMenuItem<Medium>(
value: medium,
child: Text(medium.mediumName),
);
}).toList(),
onChanged: (val) {
setState(() {
selectedMedium = val;
mediumId = val?.mediumId;
});
}),
并获取值代码如下。我使用的变量。
var _standards = <Standard>[];
var _mediums = <Medium>[];
Standard? selectedStandard;
Medium? selectedMedium;
@override
void initState() {
super.initState();
ApiManager().getStandards().then((standards) {
setState(() {
_standards = standards;
});
});
}
void onMediumChange(standard) {
setState(() {
selectedStandard = standard;
_mediums = [];
});
String mediumUrl =
"$baseUrl/medium/get_by_course_id?standard_id=${selectedStandard?.standardId}";
ApiManager().getMediums(mediumUrl).then((List<Medium> value) => {
setState(() {
_mediums = value;
})
});
}
解决方案
首先,检查 _mediums 中的值,因为根据此错误,您必须在此处具有不同的 selectedMedium 值!!!
推荐阅读
- bash - 使用特定方案重命名文件
- android - React Native:Android 构建 - App.js:无法读取 null 的属性“绑定”
- python - Numpy 从二维数组中切片 2 列
- c++ - Boost Spirit X3:折叠单元素列表
- vba - VBA Excel - 使用按钮调用宏
- kubernetes - kubectl create 似乎没有做任何事情
- java - 如何流利地比较 ArrayList 元素?
- xslt - XSLT 后续兄弟意外结果
- continuous-integration - CircleCI API 的行为与 github 提交触发器不同?
- javascript - Threejs TrackBallControl 顶部和底部视图不起作用