我目前正在尝试API。我创建了一个模型类来处理数据。
import 'package:flutter/foundation.dart';
class Post {
final int id;
Post({
@required this.id,
});
factory Post.fromJson(Map<String, dynamic> json) {
return Post(
id: json['graphql']['shortcode_media']['id'] as int,
);
}
}
之后,我创建了一个HttpServiceclass来调用API
import 'dart:convert';
import 'package:http/http.dart';
import 'package:insta/model/abstractmedia.dart';
class HttpService {
final String postsURL = "https://www.instagram.com/p/B-mvkeIlQcP/?__a=1";
Future<List<Post>> getPosts() async {
Response res = await get(postsURL);
if (res.statusCode == 200) {
Map<String, dynamic> body = jsonDecode(res.body);
List<Post> posts = body.map(
(dynamic item) => Post.fromJson(item),).toList();
return posts;
} else {
throw "Can't get posts.";
}
}
}
但是在第17行的httpService类中出现错误
Error: A value of type 'Post' can't be assigned to a variable of type 'MapEntry<dynamic, dynamic>'.
如何解决这个错误,我是新手
答案 0 :(得分:0)
在代码的这一部分
List<Post> posts = body.map((dynamic item) => Post.fromJson(item),).toList();
var item
是地图body
的键。解决此问题的一种方法是将Post.fromJson(item))
更改为Post.fromJson(body[item]))
或使用body.forEach