【问题标题】:How to get multiple values from DropdownButtonFormField in flutter?如何从 Flutter 中的 DropdownButtonFormField 获取多个值?
【发布时间】:2025-12-19 13:20:12
【问题描述】:

从下拉菜单中选择一项,我想在颤动的文本字段中显示它的多个值。例如,如果我选择学校,它将显示其名称、位置、联系电话。所以我需要从该项目中收集多个值。如何从 dropDownMenuItem 中获取多个值来显示多个值? 例如学校列表项如下:

      "SchoolList": [
        {
          "name": "school1",
          "location": "location1",
          "contact_no": "address1"
        },
         {
          "name": "school2",
          "location": "location2",
          "contact_no": "address2"
        },
        {
          "name": "school3",
          "location": "location3",
          "contact_no": "address3"
        },
        
      ],

【问题讨论】:

    标签: flutter drop-down-menu dropdown selectedvalue flutter-dropdownbutton


    【解决方案1】:

    首先我们需要传递Item类型作为DropdownButtonFormField的参数。 Items 将我该类型的列表,它将返回该类型的 dropDownMenuItem。然后我们将从 onChanged 部分中的项目分配值。

    
         DropdownButtonHideUnderline(
                                            child: DropdownButtonFormField<
                                                SchoolList>(
                                              validator: (value) => value == null
                                                  ? 'field required'
                                                  : null,
                                              value: selectedItem,
                                              icon: const Icon(
                                                Icons.arrow_drop_down,
                                                color: Colors.grey,
                                              ),
                                              iconSize: 24,
                                              elevation: 16,
                                              hint: Text(
                                                'Select',
                                              ),
                                              onChanged:
                                                  (SchoolList?
                                                      schoolList) {
                                                setState(() {
                                                  
                                                  selectedSchoolName =
                                                      schoolList!
                                                          .name;
                                                  selectedSchoolLocation  =
                                                      schoolList!
                                                          .location;
                                                  selectedSchoolContactNo                                            
                                                                =
                                                      schoolList!
                                                          .contact_no;
                                                });
                                              },
                                              //
                                              items: =
                                                  SchoolList
                                                  ?.map((item) {
                                                return DropdownMenuItem<
                                                    SchoolList>(
                                                  value: item,
                                                  child:
                                                      Text(item.name)),
                                                );
                                              }).toList(),
                                            ),
                                          ),
    

    【讨论】: