如何解决Flutter在ListView中添加项目
如何从下拉菜单中将项目添加到列表视图中?
这是可搜索下拉菜单的代码。我创建了一个添加按钮,我在理解如何从下拉列表中将所选项目直接添加到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();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。