我有一个用 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'
我该如何解决?提前致谢
答案 0 :(得分:1)
此行返回重复项,因此下拉列表无法确定哪个是哪个。
var res = await widget.itemCategoryRepository.get_uom();
您是否使用 FutureBuilder 读取数据?