问题描述
我是 Flutter 新手。我不明白为什么我有错误。我将我的响应从 json 转换为对象。为什么这个方法 getUser
返回 null?
Future<UserResponse> getUser(String apiToken,int id) async {
try {
Response response = await _dio.get(apiEndpoint + "users/",queryParameters: {
"id": id,},options: Options(
headers: {
"Authorization": apiToken
}),);
return UserResponse.fromJson(response.data);//'List<dynamic>' is not a subtype of type 'Map<String,dynamic>'
} catch (error,stacktrace) {
}
}
UserResponse.fromJson(Map<String,dynamic> json) {
id = json['id'];
name = json['name'];
surname = json['apiToken'];
response = json['response'];
}
解决方法
似乎您的 /users
端点返回用户对象列表,但 UserResponse.fromJson
期望他的输入是 Map<String,dynamic>
。
您可以尝试以下操作:
return response.data
.map<UserResponse>((el) => UserResponse.fromJson(el))
.toList();
但您似乎只期待一位用户,因为您在查询参数中提供了用户的 id
。您确定用户 ID 应该是查询参数吗?
您的代码解析为:
/users/?id=<id>
不会吧
/users/<id>
在这种情况下,您需要更改为:
Response response = await _dio.get(apiEndpoint + "users/$id",options: Options(
headers: {
"Authorization": apiToken
}),);