在我删除类别后出现此错误,但它从 firebase 中删除:
发生异常。 _AssertionError ('package:flutter/src/material/dropdown.dart': 断言失败: 第 948 行 pos 15: 'items == null || items.isEmpty || value == 空 || items.where((DropdownMenuItem 项目) { 返回 item.value == value; }).length == 1':应该只有一项具有 [DropdownButton] 的值:圣诞节。 零个或 2 个或更多 检测到 [DropdownMenuItem] 具有相同的值)
这所有小部件:
Widget allCat() {
return StreamBuilder(
stream: catStream,
builder: (context, AsyncSnapshot snapshot) {
return snapshot.hasData
? Column(
children: [
DropdownButton(
value: selectedValue,
hint: Text("Choose Categorey"),
onChanged: (val) {
setState(() {
selectedValue = val;
});
},
items: [
for (ds in snapshot.data.docs) //2 snapshot.data.docs[0]
DropdownMenuItem(
value: ds['catName'].toString(),
child: Text(ds['catName']),
),
],
),
SizedBox(
height: 20,
),
ElevatedButton(
onPressed: () async {
await DataBaseMethods().deleteCat(ds.id);
},
child: Text("Delete Category"),
),
],
)
: Container();
});
}
selectedValue = val
也会保留,但是 DropdownMenuItem
从缺少当前所选值的流中获取更新值。 您可以在从后端删除之前设置selectedValue=null
。
ElevatedButton(
onPressed: () async {
setState(() => selectedValue = null);
await DataBaseMethods().deleteCat(ds.id);
},
child: Text("Delete Category"),
),