我试图从API获取数据。我得到了错误类型列表不是地图的子类型。我是新来的,不明白我在哪里犯了错误。
这是我的回帖功能:
Future<Post> fetchPost() async {
final response = await http.get('http://starlord.hackerearth.com/beercraft');
if (response.statusCode == 200) {
return Post.fromJson(json.decode(response.body));
} else {
throw Exception('Failed to load post');
}
}
在我的主屏幕中,我使用了一个FutureBuilder
,如下所示:
final Future<Post> post;
HomeScreen({Key key, this.post}) : super(key: key);
FutureBuilder<Post>(
future: post,
builder: (context, result) {
if (result.hasData) {
return ListView.builder(
itemBuilder: (context, index){
return cartItemComponent(result.data.name, result.data.abv, result.data.ounces);
},
);
} else if (result.hasError) {
return Text("${result.error}");
}
// By default, show a loading spinner.
return CircularProgressIndicator();
},
如何解决此错误?提前谢谢。
原因是您正在调用的API(http://starlord.hackerearth.com/beercraft
)返回一个JSON对象列表,但您处理它的方式就像只有一个对象一样。
您将需要重写代码,将其作为列表处理,这将与您的列表视图
完美配合:
Future<List<Post>> fetchPosts() async {
final response = await http.get('http://starlord.hackerearth.com/beercraft');
if (response.statusCode == 200) {
return json.decode(response.body).map<Post>((item) => Post.fromJson(item)).toList();
} else {
throw Exception('Failed to load post');
}
}
fetchPost
需要更新为fetchPosts
才能返回未来
final Future<List<Post>> posts;
FutureBuilder(
future: posts,
builder: (context, AsyncSnapshot<List<Post>> snapshot) {
if (snapshot.hasData) {
return ListView(
children: snapshot.data.map<Widget>((post) {
return cartItemComponent(post.name, post.abv, post.ounces);
}).toList(),
);
} else if (snapshot.hasError) {
return Text('${snapshot.error}');
}
// By default, show a loading spinner.
return const CircularProgressIndicator();
}
)
请注意,我只是将列表作为
小部件的列表传递给
ListView
的子项
参数,因为在这种情况下不需要任何生成器
我只是再次使用map
方法,使用cartItemComponent
函数将Post
转换为Widget
。
我从github获取了代码,但仍然不起作用 生成FutureBuilder时引发了以下类型错误(脏,状态:_FutureBuilderState#a936c):类型“List”不是类型“Map”的子类型 在此列出声明 这是地图
我正在开发一个依靠API REST调用的flutter应用程序。来自API的响应有点复杂。当调用我的API(例如:api/产品)时,我可以从日志中看到响应:但是我有这个错误: 类型列表 StackTrace: [更新]:退货产品响应。fromJson(response)而不是response ProductsRespository: ProductsBloc: 回应: ApiProvider: 模
我正在对地图执行firestore查询 没有人工作过,任何帮助都是感激的 谢谢你抽出时间
我是颤振初学者。我得到这样的JSON响应时出错。 我一直在论坛上寻找这个问题,我发现是这样的。 但我不懂如何编写函数。这是我的密码。 还有像这样的错误。 我很抱歉问了同样的问题,因为我不明白
我有点被某些情况困住了。 1)
我的JSON有点像这样: 我的模型类: 这是我的api调用: 如何获取图像。小班?如果我需要澄清我的问题,请告诉我。我得到的错误列表不是Map类型的子类型