Future异步函数的返回值存在问题

时间:2019-05-21 19:53:16

标签: list dart flutter future

我创建了一个从api获取json的函数。问题在于该函数未返回值。它返回“将来的实例...”

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

{
   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;
    });
  }

我希望输出是所有房间的列表,但是它将返回“ Instance of Future ...”。 如果尝试获取长度,则可以在函数内部打印该长度,但是如果我调用该函数然后要求输入长度,则它将不起作用。

1 个答案:

答案 0 :(得分:1)

在使用异步/等待时,不需要使用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;
}