【问题标题】:Http Requset inside Loop For循环中的 Http 请求
【发布时间】:2021-08-03 20:32:49
【问题描述】:

我有一个产品列表,有些产品没有图像,因此我不想显示它,我的图像和产品来自不同的网络服务。

我想我没有做得更好,因为它不起作用!

我的代码:

   List<ProductListObj> obj2 = obj;
    obj2.forEach((element) async{
      String url = _url.ImgProduto(codInterno: element.codProduto.toString());

      var response = await http.get(Uri.parse(url));

      if (response.statusCode == 404) {
        obj.removeWhere((element) => element.codProduto == element.codProduto);
      }
    });
   
    return obj;

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    如果您有一个没有图片的产品列表,并且您想从后端获取图片: 案例 1:如果您可以使用 URL 访问产品图像,则可以使用 cached_image_network 它是一个帮助您自动加载图像缓存的依赖项。 案例 2:您可以获取带有数据的图像 URL,并在您的对象类中有一个 photoURL 然后执行第 1 个案例。 否则,解释更多。

    【讨论】:

    • 我正在使用cahed_image_network,当没有图像时我显示“找不到图像”,但是,有多少产品没有图像,主屏幕很差,所以我的团队没有获取更多图片我正在尝试将此产品隐藏在主页中,如果用户搜索它,我将显示普通卡片,其中包含详细信息,但没有图片。
    【解决方案2】:

    每个异步都将单独运行。您应该使用map,它将返回列表。像这样的东西会起作用

        List<ProductListObj> obj2 = obj;
        await Future.wait[obj2.map((element) async{
          String url = _url.ImgProduto(codInterno: element.codProduto.toString());
    
          var response = await http.get(Uri.parse(url));
    
          if (response.statusCode == 404) {
            obj.removeWhere((e) => e.codProduto == element.codProduto);
          }
        })];
       
        return obj;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      相关资源
      最近更新 更多