如何从未来的列表中构建颤振下拉菜单

Lea*_*day 3 flutter

我正在尝试在颤振中进行下拉选择输入!我想从未来的列表引用中获取数据。

我不知道如何去做,因为这给了我错误:

这是代码:

 dropdownButtonHideUnderline(FormFieldState<String> state) {
    return FutureBuilder(
      future: Global.payCountriesRef.getData(),
      builder: (BuildContext context, AsyncSnapshot snap) {
        if (snap.hasData) {

          List<PayCountries> countries = snap.data;
     return new DropdownButtonHideUnderline(
                    child: new DropdownButton<String>(
                      value: _sendForm.country,
                      isDense: true,
                      onChanged: (String newValue) {
                        setState(() {
                          _sendForm.country = newValue;
                          //_updateDropdownValue(newValue, model);
                          state.didChange(newValue);
                        });
                      },
                      items: List<String>.from(countries)
                          .map((String value) {
                        return new DropdownMenuItem<String>(
                          value: value,
                          child: new Text(value),
                        );
                       }).toList()
                    ),
                  );
        }
      }
    );
  }
Run Code Online (Sandbox Code Playgroud)

shb*_*shb 5

下面的代码显示了一个示例,用于从 future list

new DropdownButtonHideUnderline(
              child: new FutureBuilder<List<BranchItems>>(
                future: new BranchService().fetchBranchItems(),
                builder: (context, snapshot) {
                  if (snapshot.hasError) {
                    return new Container();
                  } else if (snapshot.hasData) {
                    list.clear();
                    //listItemNames.clear();
                    dropDownItemsMap = new Map();

                    snapshot.data.forEach((branchItem) {
                      //listItemNames.add(branchItem.itemName);
                      int index = snapshot.data.indexOf(branchItem);
                      dropDownItemsMap[index] = branchItem;

                      list.add(new DropdownMenuItem(
                          child: new DropDownItem(
                              image: Image.network(branchItem.itemPicture),
                              text: branchItem.itemName),
                          value: index));
                    });

                    return DropdownButton(
                      items: list,
                      onChanged: (int selected) {
                        _selectedItem = list[selected].value;
                        setState(() {
                          selectedItemName =
                              dropDownItemsMap[_selectedItem].itemName;
                        });
                      },
                      hint: new Text(
                        selectedItemName,
                        style: new TextStyle(color: Colors.blue),
                      ),
                    );
                  } else {
                    return CircularProgressIndicator();
                  }
                },
              ),
            ),
Run Code Online (Sandbox Code Playgroud)