【发布时间】:2020-05-23 20:23:06
【问题描述】:
我正在通过 API 动态更新下拉表。当我选择一个小时时,会从 API 中检索相应的主题。
假设我在几个小时之间切换。
第 5 小时有科目 A 和 B,而第 4 小时只有科目 B。
最初选择第 5 课时选择 A 作为所选科目。
当我选择第 4 小时时,新列表是从 API 获取的,但我收到“item not in dropdownbuttonitemlist error”。
我知道这是因为 DropDownMenuField 的 value 属性,这就是我在成功从 API 检索信息时将 value 设置为 null 的原因。
sn-ps 如下:
下拉按钮:
DropdownButtonFormField<String>(
isExpanded: true,
style: new TextStyle(
fontFamily: "Poppins",
fontWeight: FontWeight.w400,
color: Colors.black,
),
decoration: InputDecoration(
contentPadding: const EdgeInsets.all(0),
labelText: "Select subject",
labelStyle: TextStyle(
fontFamily: "Poppins",
fontWeight: FontWeight.w200,
color: Colors.black,
),
),
value: subjectController,
onChanged: (value) {
setState(() {
pk_table =
pk_table_array[subject_array.indexOf(value)];
required_timestamp = required_timestamp_array[
subject_array.indexOf(value)];
subjectController = value;
buttonActive = true;
});
},
items: _subjectDropDownItems,
),
setState 方法(在 API 成功获取时调用):
setState(() {
subjectController = null;
buttonActive = true;
subject_array.forEach((subject) {
if (subjectController == null) {
print("updated value");
subjectController = subject;
}
_subjectDropDownItems.add(new DropdownMenuItem(
child: new Text(subject.toString()),
value: subject.toString(),
));
});
});
subjectController 被定义为 State 类的一个属性。
这是错误:
There should be exactly one item with [DropdownButton]'s value: IT8551B - Web Technology Laboratory B.
Either zero or 2 or more [DropdownMenuItem]s were detected with the same value
提前感谢您的帮助!
【问题讨论】:
标签: flutter dart statefulwidget dropdownbutton