来自 Future 异步函数的 return 值的问题

Problem with the return value from a Future async function

我创建了一个从 api 获取 json 的函数。问题是函数没有 returning 一个值。它 returns 'Instance of Future...'

我尝试了不同的解决方法。如果我打印应该 return (print(extractdata[1])) 的值,它实际上 return 是它应该的值:

{
   id: 2
   name: Sala 2,
   beds: [
       {
           id: 3,
           name: Cama 3,
           paciente: null
       },
       {
           id: 4,
           name: Cama 4,
           paciente: null
       }
   ]
}

Future <List> getRoom() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    var _token = prefs.getString('token');
    final response = await http.get('http://10.0.2.2:8000/api/room/',
    headers: {'Authorization':'JWT $_token'}
    ).then((res){
      var extractdata = JSON.jsonDecode(res.body);
      return extractdata;
    });
  }

我希望输出是所有房间的列表,但它 returns 'Instance of Future...'。 如果我尝试获取长度,如果我在函数内部打印它,它会起作用,但如果我调用该函数,然后询问长度,它就不起作用。

因为您正在使用 async/await,所以您不需要使用 then

Future <List> getRoom() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    var _token = prefs.getString('token');

    final response = await http.get('http://10.0.2.2:8000/api/room/',
        headers: {'Authorization':'JWT $_token'}
    );

    var extractdata = JSON.jsonDecode(response.body);
    return extractdata;
}