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();
    }