在 DropDownButton 中使用动态列表 |扑
Use dynamic list in DropDownButton | Flutter
我的问题如下:
class Data {
final String? image, title, link;
final Color? color;
Data({
this.title,
this.image,
this.link,
this.color,
});
}
List dataList = [
Data(
title: "XXX",
image: "XXX",
link: "XXX",
color: XXX),
...
我有这个 class 和列表来存储我的数据,但是我第一次使用这种方式来学习新东西。现在我遇到的问题是,由于我在其中的 Data(),我完全无法使用列表中的数据创建 DropDownButton。
我试过这样的事情:
@override
Widget build(BuildContext context) {
return Container(
child: Center(
child: DropdownButton<String>(
items: dataList.map((Map map) {
return new DropdownMenuItem<String>(
value: map["title"].toString(),
child: new Text(
map["name"],
),
);
}).toList(),
),
),
);
}
}
但我确信此选项不适用于我的示例。我认为现在有办法向您寻求帮助。所以我的确切问题是,如何创建一个 DropDownMenu/Button,其中所有数据 classes 的标题都显示在列表中。感谢您的帮助,谢谢。
您的列表是通用类型数据,但您将其视为地图。
@override
Widget build(BuildContext context) {
return Container(
child: Center(
child: DropdownButton<String>(
items: dataList.map((data) {
return DropdownMenuItem<String>(
value: data.title.toString(),
child: Text(
data.name,
),
);
}).toList(),
),
),
);
}
}
现在应该可以了。
我的问题如下:
class Data {
final String? image, title, link;
final Color? color;
Data({
this.title,
this.image,
this.link,
this.color,
});
}
List dataList = [
Data(
title: "XXX",
image: "XXX",
link: "XXX",
color: XXX),
...
我有这个 class 和列表来存储我的数据,但是我第一次使用这种方式来学习新东西。现在我遇到的问题是,由于我在其中的 Data(),我完全无法使用列表中的数据创建 DropDownButton。
我试过这样的事情:
@override
Widget build(BuildContext context) {
return Container(
child: Center(
child: DropdownButton<String>(
items: dataList.map((Map map) {
return new DropdownMenuItem<String>(
value: map["title"].toString(),
child: new Text(
map["name"],
),
);
}).toList(),
),
),
);
}
}
但我确信此选项不适用于我的示例。我认为现在有办法向您寻求帮助。所以我的确切问题是,如何创建一个 DropDownMenu/Button,其中所有数据 classes 的标题都显示在列表中。感谢您的帮助,谢谢。
您的列表是通用类型数据,但您将其视为地图。
@override
Widget build(BuildContext context) {
return Container(
child: Center(
child: DropdownButton<String>(
items: dataList.map((data) {
return DropdownMenuItem<String>(
value: data.title.toString(),
child: Text(
data.name,
),
);
}).toList(),
),
),
);
}
}
现在应该可以了。