繁体   English   中英

如何在下拉列表中具有相同的值 - 颤振/飞镖

[英]How to have same values in dropdown - flutter/dart

我创建了一个用于保存产品名称及其值的地图列表。 例如:假设有两种类型的产品(厨房和电子产品)并且两种产品具有相同的值 (10)

在这种情况下,下拉菜单会抛出以下错误:检测到具有相同值的零或 2 或更多

那么在这种情况下,我怎样才能为下拉菜单设置相同的值

这是我到目前为止所做的

String productCategory = '10';
List productList = [{'name':'kitchen', 'value':'10'}, {'name':'electronic', 'value':'10'}];

DropdownButton(
                                  value: productCategory,
                                  isExpanded: true,
                                  items: productList.map((e){
                                    return DropdownMenuItem(
                                      child: Text(e['name'].toString().toUpperCase(), style: GoogleFonts.oswald(textStyle: const TextStyle(color: Colors.black))),
                                      value: e['value'],
                                    );
                                  }).toList(),
                                  onChanged: (value){
                                    setState(() {
                                      productCategory = value as String;
                                    });
                                  }
                              ),

我的解决方案是创建 Product 类型的 DropdownButton

late List<Product> products;
List productList = [
{'name': 'kitchen', 'value': '10'},
{'name': 'electronic', 'value': '10'}];

 @override
void initState() {
   super.initState();
   products = productList.map((e) => Product.fromJson(e)).toList();
   productCategory = products.first;
  }

DropdownButton<Product>(
        value: productCategory,
        isExpanded: true,
        items: products.map((e) {
          return DropdownMenuItem(
            child: Text(e.name.toString().toUpperCase()),
            value: e,
          );
        }).toList(),
        onChanged: (value) {
          setState(() {
            productCategory = value!;
          });
        }),


class Product {
 final String name;
 final String value;

 Product({required this.name, required this.value});

 factory Product.fromJson(Map<String, dynamic> json) {
    return Product(
      name: json['name'],
      value: json['value']);
   }
}

如果这没有帮助,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM