如何在下拉列表中具有相同的值 - flutter/dart
How to have same values in dropdown - flutter/dart
我创建了一个地图列表来保存产品名称及其值。例如:假设有两种类型的产品(厨房和电子产品)并且这两种产品具有相同的值 (10)
在这种情况下,下拉菜单会抛出以下错误:检测到 0 个或 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']);
}
}
如果这没有帮助,请告诉我。
我创建了一个地图列表来保存产品名称及其值。例如:假设有两种类型的产品(厨房和电子产品)并且这两种产品具有相同的值 (10)
在这种情况下,下拉菜单会抛出以下错误:检测到 0 个或 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
类型的 DropdownButtonlate 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']);
}
}
如果这没有帮助,请告诉我。