如何将下拉列表中的项目添加到列表视图中?
这是可搜索下拉列表的代码。我创建了一个添加按钮,但我无法理解如何将下拉列表中的选定项目直接添加到ListView中。目前,我只在Listview中返回一些文本。(下拉列表中每个元素的名称Galati(
List<PlatformReach> _platformReach = PlatformReach.getPlatformReach();
List<DropdownMenuItem<PlatformReach>> _dropdownPlatformReach;
PlatformReach _selectedPlatformReach;
void initState() {
_dropdownMenuItems = buildDropDownMenuItems(_visibility);
_selectedVisibility = _dropdownMenuItems[0].value;
_dropdownPlatformReach =
buildDropdownMenuItemsPlatformReach(_platformReach);
_selectedPlatformReach = _dropdownPlatformReach[0].value;
super.initState();
}
List<DropdownMenuItem<PlatformReach>> buildDropdownMenuItemsPlatformReach(
List platforms) {
List<DropdownMenuItem<PlatformReach>> items = List();
for (PlatformReach platform in platforms) {
items.add(
DropdownMenuItem(
value: platform,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(
platform.name,
style: TextStyle(fontWeight: FontWeight.bold),
textAlign: TextAlign.start,
),
Text(
platform.hint,
style: TextStyle(
fontWeight: FontWeight.normal, color: Colors.grey),
textAlign: TextAlign.end,
)
],
),
),
);
}
return items;
}
Expanded(
child: SearchableDropdown.single(
isExpanded: true,
value: _selectedPlatformReach,
hint: " ",
items: _dropdownPlatformReach,
onChanged: (PlatformReach selectedPlatformReach) {
setState(() {
_selectedPlatformReach = selectedPlatformReach;
});
},
),
flex: 2,
),
class PlatformReach {
String name;
String hint;
PlatformReach(this.name, this.hint);
static List<PlatformReach> getPlatformReach() {
return <PlatformReach>[
PlatformReach('Jud Galati', '(RO, [Galati] County)'),
PlatformReach('Jud Braila', '(RO, [Braila] County)'),
PlatformReach('Jud Prahova', '(RO, [Ploiesti] County)'),
PlatformReach('Jud Maramures', '(RO, [Baia Mare] County)'),
];
}
}
ListView.builder(
padding: EdgeInsets.only(left: 10),
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: _platformReach.length,
itemBuilder: (BuildContext ctxt, int Index) {
return new Text('Galati');
}),
DropdownButton首先应该使用它。那么您应该用Listview来结束它。之后,您可以通过映射来添加项目。下面是一个简单的示例。
ListView.builder(
itemCount: 20,
itemExtent: 50.0,
itemBuilder: (BuildContext context, int index) {
for (int i = 0; i < 20; i++) {
selectedItemValue.add("NONE");
}
return DropdownButton(
value: selectedItemValue[index].toString(),
items: _dropDownItem(),
onChanged: (value) {
selectedItemValue[index] = value;
setState(() {});
},
hint: Text('Select drowdown'),
);
}),
)
],
));
List<DropdownMenuItem<String>> _dropDownItem() {
List<String> ddl = ['Jud Galati', '(RO, [Galati] County)'];
return ddl
.map((value) => DropdownMenuItem(
value: value,
child: Text(value),
))
.toList();
}