我想从api获取列表视图并将其放入我的应用程序屏幕,但它向我显示了
<script
async defer src="https://maps.googleapis.com/maps/api/js?key={MY_API_KEY}&callback=initMap"></script>
在我的提供程序中,我添加了我需要的未来,但是现在有一个错误,我无法运行登录应用程序
[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>'
这是我用来返回国家/地区类别的模型
List<Country> _country;
List<Country> get country => _country;
Future<dynamic> countryList() async {
_isLoading = true;
notifyListeners();
http.Response response = await http.get(Environment.country,
headers: Environment.requestHeader);
Map<String,dynamic> res = json.decode(response.body);
var results;
if (res['code'] == 200) {
_country = [];
res['message'].forEach((v) {
_country.add(new Country.fromJson(v));
});
results = true;
} else {
results =
FailedRequest(code: 400, message: res['message'], status: false);
}
_isLoading = false;
notifyListeners();
return results;
}
我的json响应
class Country{
String name;
String photo;
Country({
this.name,
this.photo,
});
Country.fromJson(Map<String, dynamic> json){
name = json['countryName'];
photo = json['countryImage'].toString();
}
}
我试图添加到列表语句,但它也没有起作用!
答案 0 :(得分:0)
我想问题出在这里:
Map<String,dynamic> res = json.decode(response.body);
您的json返回了地图列表:
respond data : [{"countryName":"Egypt","countryImage":"https://i.ytimg.com/vi/TWaReNkjTLk/maxresdefault.jpg"},{"countryName":"Canada","countryImage":"https://pix10.agoda.net/geo/country/100/3_100_canada_02.jpg?s=1920x"},{"countryName":"US","countryImage":"https://www.green-card.com/assets/Uploads/living-usa-states-florida-green-card.jpg"}]
但是,您正在将响应(即列表)分配给地图。
尝试将Map<String,dynamic> res = json.decode(response.body);
更改为List res = json.decode(response.body);
希望对您有所帮助!
答案 1 :(得分:0)
您的响应数据返回地图列表!
如果您确定只有一张地图(国家或地区),请更改
Map<String,dynamic> res = json.decode(response.body);
到
Map<String,dynamic> res = json.decode(response.body)[0];
如果地图数量(国家/地区或其他),请更改您的
Map<String,dynamic> res = json.decode(response.body);
到
List<Map<String,dynamic>> res = json.decode(response.body);