List<String> getData() async {
var response = await http.get(url);
if (response.statusCode == 200) {
String data = response.body;
print(data);
var temperature = jsonDecode(data)['main']['temp'];
var condition = jsonDecode(data)['weather'][0]['id'];
var city_name = jsonDecode(data)['name'];
return [temperature, condition, city_name];
} else {
print(response.statusCode);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个奇怪的错误,说我无法返回List<String>,因为正在等待List<String>返回。
由于获取数据的函数是异步的,因此它应该返回Future<List<String>>示例如下:
Future<List<String>> getData() async {
var response = await http.get(url);
if (response.statusCode == 200) {
String data = response.body;
print(data);
var temperature = jsonDecode(data)['main']['temp'];
var condition = jsonDecode(data)['weather'][0]['id'];
var city_name = jsonDecode(data)['name'];
return <String>[temperature, condition, city_name];
} else {
print(response.statusCode);
}
}
Run Code Online (Sandbox Code Playgroud)
另外,您不必要地解码 3 次,您可以将其保存在 var 中并用于进一步使用,示例如下:
String data = response.body;
var decodedData = jsonDecode(data);
var temperature = decodedData['main']['temp'];
var condition = decodedData['weather'][0]['id'];
var city_name = decodedData['name'];
Run Code Online (Sandbox Code Playgroud)