Future<List> getLocation(String city,DateTime date) async {
try {
http.Response hasil = await http.get(
Uri.encodeFull(
"https://api.pray.zone/v2/times/day.json?city=${city}&date=${date}"),
headers: {"Accept": "Application/json"});
if (hasil.statusCode == 200) {
print("Location Successfully Gathered");
final data = locationModelFromJson(hasil.body);
return data;
} else {
print("Error Status ${hasil.statusCode.toString()}");
}
} catch (e) {
print("error catch $e");
return null;
}
}
为什么我不能返回数据变量?它说,因为模型的返回类型为List<dynamic>
编辑: 我的模型是https://textuploader.com/1pmb6
答案 0 :(得分:0)
如您所见,正在获取和解析的数据为LocationModel.fromJson
,并且您正在返回数据。但是方法的返回类型为Future<List>
,因此很明显,您没有返回您提到的方法将返回的类型。
正确的实现方式是
Future<LocationModel> getLocation(String city,DateTime date) async {
...
}
如果您的API返回的是LocationModel
列表,这就是我假设您提到列表的原因,
那么您将必须执行此操作
Future<List<LocationModel> getLocation(String city,DateTime date) async {
try {
http.Response hasil = await http.get(
Uri.encodeFull(
"https://api.pray.zone/v2/times/day.json?city=${city}&date=${date}"),
headers: {"Accept": "Application/json"});
if (hasil.statusCode == 200) {
print("Location Successfully Gathered");
List<LocationModel> locs =[];
hasil.forEach((d){
final l = locationModelFromJson(d.body);
locs.add(l);
});
return locs;
} else {
print("Error Status ${hasil.statusCode.toString()}");
}
} catch (e) {
print("error catch $e");
return null;
}
}
Dart是一种非常严格的类型化语言,因此,如果您不提及类型,Dart会默认认为它是dynamic
,因此会出现该错误。