【问题标题】:Problem with the return value from a Future async functionFuture 异步函数的返回值问题
【发布时间】:2019-10-08 06:34:08
【问题描述】:

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

我希望输出是所有房间的列表,但它返回的是“未来实例...”。 如果我尝试获取长度,如果我在函数内打印它,它会起作用,但如果我调用函数然后询问长度,它就不起作用。

【问题讨论】:

    标签: list dart flutter future


    【解决方案1】:

    由于您使用的是 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;
    }
    

    【讨论】:

    • 我尝试了你的建议,但它仍然检索“接收者:未来实例
    • 请更新问题并添加您的代码现在如何
    • 谢谢。我在我的代码中添加了一个 Future Builder,现在它可以正确获取列表。
    猜你喜欢
    • 2016-08-25
    • 2022-12-09
    • 2022-01-14
    • 2015-08-24
    • 1970-01-01
    • 2020-09-12
    • 2013-09-27
    • 1970-01-01
    相关资源
    最近更新 更多