Issue
I’m back with another issue with the DropdownButton.
The DropdownButton is not enabled. I found this in api.flutter.dev
If the onChanged callback is null or the list of items is null then
the dropdown button will be disabled, i.e. its arrow will be displayed
in grey and it will not respond to input.
Here is my code now:
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;
}
The forEach loop runs fine and in debug mode I can see that there is data in the document object. I don’t know how to debug the DropdownButton code to see why the button is not active. Any suggestions would be helpful.
Thanks.
Solution
forEach()
on Iterables does not return any value (see: https://api.dart.dev/stable/2.10.5/dart-core/Iterable/forEach.html), and thus items
is null and the DropdownButton
is disabled. Use map
instead (https://api.dart.dev/stable/2.10.5/dart-core/Iterable/map.html). Example:
snapshot.data.docs.map<DropdownMenuItem<String>>((document) {
return new DropdownMenuItem<String>(
value: document.data()['name'],
child: new Text(document.data()['name']),
);
}).toList(),
Answered By – puelo
Answer Checked By – Terry (FlutterFixes Volunteer)