我在颤振中遇到下拉按钮问题

问题描述 投票:0回答:1

在我删除类别后出现此错误,但它从 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();
        });
  }
flutter firebase
1个回答
0
投票
即使您从备份中删除,

selectedValue = val
也会保留,但是
DropdownMenuItem
从缺少当前所选值的流中获取更新值。 您可以在从后端删除之前设置
selectedValue=null

ElevatedButton(
   onPressed: () async {
   setState(() => selectedValue = null);
   await DataBaseMethods().deleteCat(ds.id);
   },
   child: Text("Delete Category"),
),
© www.soinside.com 2019 - 2024. All rights reserved.