【发布时间】:2021-05-29 01:28:14
【问题描述】:
我正在尝试在 FutureBuilder 中构建 Projects 列表的下拉按钮,但收到错误:
Expected a value of type 'List<DropdownMenuItem<Project$>>?', but got one of type 'List<dynamic>'
我了解错误及其发生位置,但我不明白为什么它不会返回 List<DropdownMenuItem>,所以我似乎无法弄清楚如何在 Dart 中修复它。
违规代码:
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: _futureProjects,
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.hasData) {
return Column(children: [
Text('Project:'),
new DropdownButton<Project>(
value: _selectedProject,
items: snapshot.data
.map((value) => new DropdownMenuItem<String>(
value: value.name,
child: Text(value.name),
))
.toList(),
),
} else {
// ...
_futureProjects 通过 http:
Future<List<Project>> getJiraProjectsList() async {
final response = await http.get(url + 'jira/projects');
if (response.statusCode == 200) {
var jsonData = jsonDecode(response.body);
List<Project> projects = [];
for(var data in jsonData){
Project proj = Project.fromJson(data);
projects.add(proj);
}
return projects;
} else {
throw Exception('Failed to load Projects List');
}
}
任何帮助我解决这个问题将不胜感激
【问题讨论】: