如何在颤振中设置下拉值?

时间:2020-12-27 08:07:43

标签: flutter dart

我有一个用 Satuan 调用的类,现在我想将值设置为它,然后在我的下拉列表中将它用作选定值。这就是我所做的

 Satuan selectedUom;
 Future<String> get_itemuom() async {
    var res = await widget.itemCategoryRepository.get_uom();
    setState(() {
      res.forEach((element) {
        if (element.uomId == widget.item.uomId) {
          selectedUom = Satuan(
              uomId: element.uomId,
              uomName: element.uomId,
              flagDecimal: element.flagDecimal);
        }
      });
      itemsuom = res
          .map(
            (uom) => DropdownMenuItem(
              child: Text(uom.uomName),
              value: uom,
            ),
          )
          .toList();
    });
    return "Sucess";
  }

这是我的下拉菜单

   Widget satuan_field() {
return (itemsuom.length < 1)
    ? Center(
        child: CircularProgressIndicator(),
      )
    : Padding(
        padding: EdgeInsets.fromLTRB(20, 5, 20, 10),
        child: Container(
          color: Color(0xfff5f5f5),
          child: new DropdownButtonFormField<Satuan>(
            validator: (value) {
              if (value == null) {
                return 'Wajib di isi';
              }
              return null;
            },
            style: TextStyle(color: ColorThemes().textColor),
            decoration: InputDecoration(
                enabledBorder: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(25.0),
                  borderSide: BorderSide(
                    color: ColorThemes().mainColor,
                    width: 2.0,
                  ),
                ),
                border: OutlineInputBorder(),
                labelText: 'Satuan',
                prefixIcon: Icon(Icons.card_membership,
                    color: ColorThemes().secondaryColor),
                labelStyle: TextStyle(
                    fontSize: ColorThemes().default_text_size,
                    color: ColorThemes().secondaryColor)),
            items: itemsuom,
            value: selectedUom,
            onChanged: (value) {
              setState(() {
                _mySelectionuom = value.uomId;
                isInputDecimal = value.flagDecimal;
                _itemStock.text = "";
              });
            },
          ),
        ),
      );

}

当我运行它时出现此错误

<块引用>

I/flutter (6652):==╡ 小部件库捕获的异常 ╞================================================ ===========I/颤动 (6652):以下断言在构建 EditScreen(dirty, 状态:_EditScreenState#82e0b):I/flutter (6652):应该有 正好有一个具有 [DropdownButton] 值的项目:“Satuan”的实例。 I/flutter(6652):零个或 2 个或更多 [DropdownMenuItem] 是 检测到相同的值 I/flutter (6652): 'package:flutter/src/material/dropdown.dart': I/flutter (6652): 失败的断言:第 1478 行 pos 15:'items == null || items.isEmpty || 值 == 空 ||我/扑(6652):
items.where((DropdownMenuItem item) { I/flutter ( 6652):
返回 item.value == 值; I/flutter (6652): }).length == 1'

我该如何解决?提前致谢

1 个答案:

答案 0 :(得分:1)

此行返回重复项,因此下拉列表无法确定哪个是哪个。

var res = await widget.itemCategoryRepository.get_uom();

您是否使用 FutureBuilder 读取数据?