Flutter无法从另一个类调用异步函数

时间:2020-03-11 20:47:05

标签: flutter dart async-await

我正试图通过面对以下问题为其余客户创建一个简单的包装器:

我有一个外部课程:

typedef void Callback(int code, String body);

class HttpClient {
void post(String url, Map<String, String> headers, Map<String, String> params,
   Callback callback) async {
 final encoding = Encoding.getByName('utf-8');

   Response response =
     await post(url, headers: headers, body: params, encoding: encoding);
   callback(200, "lol");
 }
}

我的await post(...)被突出显示并显示以下错误:“此处的表达式具有'void'类型,因此无法使用。

有趣的是,如果我将方法更改为私有,则突出显示会消失。

我还可以将post声明为私有函数,然后通过传递所有相同参数的另一个公共函数来调用它。

我应该如何编写此函数,然后再调用另一个地方?谢谢!

编辑

感谢@Jack,我找到了解决方法:

导入应该

 import 'package:http/http.dart' as http;

然后 响应响应= 等待发布(URL,标题:标题,正文:参数,编码:编码);

应更改为

 var response =
    await http.post(url, headers: headers, body: params, encoding: encoding);

1 个答案:

答案 0 :(得分:2)

IDE认为您引用的是post方法而不是http.post,因为您的方法返回一个void。可以通过将await post(...)替换为await http.post(...)来解决。希望有帮助!如果这不起作用,请在下面发表评论。