无法在compute()函数中使用http.post

时间:2019-11-12 15:33:18

标签: flutter

我正在尝试使用compute()函数来触发调用HTTP POST的顶级方法。

我可以看到正在执行的方法,但是它只是挂在我做实际文章的地方,没有返回错误。

但是,如果我在不调用compute的情况下调用它,它将正常工作

uploadData(Map args) {
  print("uploading data"); // i see this in the logs

  API().uploadData(args["data"], args["user"], args["apikey"]);
}

,通过

调用
 compute(uploadData, {
        "data": dataList,
        "user": widget.userProps,
        "apikey": widget.apiKey
      });

最后这是我的API uploadData方法

  uploadData(List files, User userdata, String apikey) async {
    try {
      String sessionid = await _getSession();
      String _base = 'http://192.168.2.13:3000/upload';
      String body = json.encode({
        "api": apikey,
        "user": userdata.toMap(),
        "data": files,
        "sessionid": sessionid
      });
      print("I AM HERE"); // this is called
      await http.post(_base,
          body: body, headers: {"Content-Type": "application/json"});
     print("this is not called");
    } catch (e) {
      print("Error"); // no error
      print(e);
    }
  }

1 个答案:

答案 0 :(得分:3)

您必须return,因为API().uploadData返回的将来(我认为是空的)。如果不返回,则执行API().uploadData,然后uploadData(Map args)返回null的值并立即从堆栈中弹出;孤立没有功能,只剩下微任务队列或事件队列,它将退出。

uploadData(Map args) {
  print("uploading data"); // i see this in the logs

  return API().uploadData(args["data"], args["user"], args["apikey"]);
}