Создать список элементов для DropdownButton во Flutter

Я вернулся с другой проблемой с DropdownButton.

DropdownButton не включен. Я нашел это в api.flutter.dev

Если обратный вызов onChanged имеет значение NULL или список элементов равен нулю, кнопка раскрывающегося списка будет отключена, то есть ее стрелка будет отображаться серым цветом, и она не будет реагировать на ввод.

Вот мой код сейчас:

      return new DropdownButton<String>(
                            hint: new Text("Select Agency"),
                            value: _currentAgency,
                            onChanged: changedDropDownAgency,
                            items: snapshot.data.docs.forEach((document) {
                              return new DropdownMenuItem<String>(
                                value: document.data()['name'],
                                child: new Text(document.data()['name']),
                              );
                            }),
                          );

void changedDropDownAgency(String selected_agency) {
    setState(() {
      _currentAgency = selected_agency;
    });
    globals.selectedAgency = selected_agency;
  }

Цикл forEach работает нормально, и в режиме отладки я вижу, что в объекте документа есть данные. Я не знаю, как отлаживать код DropdownButton, чтобы понять, почему кнопка не активна. Любые предложения были бы полезны. Спасибо.

1 ответ

forEach()on Iterables не возвращает никакого значения (см .: https://api.dart.dev/stable/2.10.5/dart-core/Iterable/forEach.html ), и, следовательно, items равно нулю и DropdownButtonвыключен. Использовать mapвместо этого ( https://api.dart.dev/stable/2.10.5/dart-core/Iterable/map.html ). Пример:

      snapshot.data.docs.map((document) {
    return new DropdownMenuItem<String>(
        value: document.data()['name'],
        child: new Text(document.data()['name']),
    );
}).toList(),
Другие вопросы по тегам