【问题标题】:Flutter cannot call async function from another classFlutter 无法从另一个类调用异步函数
【发布时间】:2020-03-11 20:47:05
【问题描述】:

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

我有一个外部类:

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;

并且 响应响应 = await post(url, headers: headers, body: params, encoding: encoding);

应该改为

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

【问题讨论】:

    标签: flutter dart async-await


    【解决方案1】:

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

    【讨论】:

    • @Igor Skryl ,如果这解决了您的问题,请接受作为答案。谢谢:)
    • 感谢您的回答!它说“未定义的名称'http'”
    • 我只是有点困惑,因为当我在 State 中使用相同的方法和相同的导入时,它起作用了
    • 好的,您的帖子有所帮助,但应该添加更多解释
    猜你喜欢
    • 2019-02-27
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 2020-04-02
    • 2023-02-10
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多