来自 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;
}
我创建了一个从 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;
}