Создать список элементов для 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(),