我创建了一个从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 ...”。 如果尝试获取长度,则可以在函数内部打印该长度,但是如果我调用该函数然后要求输入长度,则它将不起作用。
答案 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;
}