【问题标题】:flutter await GET response is not working颤动等待GET响应不起作用
【发布时间】:2020-02-27 07:36:01
【问题描述】:

我有以下功能:

 Future<Null> _loadORDER(String menssage) async {

      var enZona =await ApiClient.zonaNum(menssage, apiKey);
      print('enZona: $enZona');
      if (enZona == 'true') {
        _moveToNotification(context);
      };
    }

打印件给我以下信息:“enZona: 'Response' 实例”

如果我测试来自 api 查询的 postman 的响应是否正常工作并给我:true, 那么我希望打印结果是:“enZona: true”

但我不知道在继续条件 (if) 之前如何等待 ApiClient 的响应

感谢您的帮助!

感谢我添加了 .body 但我得到了相同的响应,apiclient 代码如下:

 final response = await http.get(baseUrl + '/shop/order/$message',
        headers: {HttpHeaders.authorizationHeader: apiKey});
    print("enZona: $response.body");
    return response;

此打印值为:enZona: 'Response'.body 实例

【问题讨论】:

  • 感谢我添加了 .body 但我得到了相同的响应,我添加了 apiclient 代码
  • 清理并构建您的代码。
  • 你应该做 print("enZona: ${response.body}");使用大括号,或者您可以先将 response.body 分配给某个变量。最终 foo = response.body;打印(富);
  • 非常感谢@Xion,这就是解决方案!

标签: flutter dart


【解决方案1】:

您应该使用大括号来执行print("enZona: ${response.body}");,或者您可以先将 response.body 分配给某个变量。

final foo = response.body; print(foo);

【讨论】:

    【解决方案2】:

    如果你去pub.dev documentation for the Response class,你会看到Response不仅仅是响应的内容。它是一个包装类,还包含响应的statusCodeheaders等信息。

    当你在 Postman 中看到响应时,你只关心响应的内容,即响应的body。您在代码中寻找的不是ResponseenZona 实例,而是enZona 响应的body

    因此,在尝试访问您的回复内容时,您必须将enZona 替换为enZona.body

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      相关资源
      最近更新 更多