Я пытался закодировать это приложение с помощью Flutter, и я хочу создать выпадающую кнопку, которая отображает значения, полученные из ответа JSON API, созданного с помощью Django.
Ответ JSON выглядит следующим образом:
[{"name": "FC1", "username": "admin"}, {"name": "FC2", "username": "admin"}]
Это используемый класс Object,
class FoodCourt {
final String name;
FoodCourt(this.name);
}
Это метод, используемый для получения данных,
Future<List<FoodCourt>> _getFoodCourt() async {
var data = await http
.get("http://timetable-api-manipal.herokuapp.com/getfoodcourt");
var jsonData = json.decode(data.body);
List<FoodCourt> fcs = [];
for (var u in jsonData) {
FoodCourt fc = FoodCourt(u["name"]);
fcs.add(fc);
}
print(fcs);
return fcs;
}
и это виджет FutureBuilder, который я использовал,
FutureBuilder(
future: _getFoodCourt(),
builder: (context, snapshot) {
return DropdownButton<String>(
hint: Text("Select"),
value: selectedFc,
onChanged: (newValue) {
setState(() {
selectedFc = newValue;
});
},
items: snapshot.data.map((fc) {
return DropdownMenuItem<String>(
child: Text(fc.name),
value: fc.name,
);
}));
}),
Показанная ошибка:
I/flutter (31862): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (31862): The following assertion was thrown building FutureBuilder<List<FoodCourt>>(dirty, state:
I/flutter (31862): _FutureBuilderState<List<FoodCourt>>#3c097):
I/flutter (31862): type 'MappedListIterable<FoodCourt,
DropdownMenuItem<FoodCourt>>' is not a subtype of type
I/flutter (31862): 'List<DropdownMenuItem<FoodCourt>>'
Я пробовал много разных способов решить эту проблему, и этот, казалось, имел для меня наибольшее значение, и все же он не работает.
Было бы очень полезно, если бы кто-то мог напечатать пример кода для рабочего решения!