问题描述
这是可搜索下拉菜单的代码。我创建了一个添加按钮,我在理解如何从下拉列表中将所选项目直接添加到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',[Braila] County)'),PlatformReach('Jud Prahova',[Ploiesti] County)'),PlatformReach('Jud Maramures',[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();
}