无法从方法返回 type 的值,因为它的返回类型为

ped*_*bb7 5 dart flutter

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>返回。

Moh*_*een 4

由于获取数据的函数是异步的,因此它应该返回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)