如何在 Flutter 中创建网络图像列表

Posted

技术标签:

【中文标题】如何在 Flutter 中创建网络图像列表【英文标题】:How to create a list of Network images in Flutter 【发布时间】:2020-02-12 13:29:45 【问题描述】:

我使用“Carousel Pro”包在我的屏幕中实现一个轮播,在这个 Carousel 类中它需要一个图像列表,

Carousel 类的语法是

Carousel(
    images: [
      NetworkImage('https://cdn-images-1.medium.com/max/2000/1*GqdzzfB_BHorv7V2NV7Jgg.jpeg'),
      NetworkImage('https://cdn-images-1.medium.com/max/2000/1*wnIEgP1gNMrK5gZU7QS0-A.jpeg'),
      ExactAssetImage("assets/images/LaunchImage.jpg")
    ],
  )

我有一个从 json 数据解析的网络图像 url 列表, 如何将 url 列表添加到 Carousel 类的子“图像”中。

【问题讨论】:

【参考方案1】:

只需创建一个 NetworkImage List 并像这样直接使用它就可以了:

List<NetworkImage> images = List<NetworkImage>();
images.add(NetworkImage('url1');
images.add(NetworkImage('url2');

在你的轮播中应该是这样的

Carousel(
images: images
)

希望对你有帮助

【讨论】:

【参考方案2】:

最好的方法是创建一个网络图像的列表/数组,然后将它们列出来

List imageList = (http://cdn-images-1, http://cdn-images-2, http://cdn-images-3,)

Carousel(
    images: [
      NetworkImage(imageList[0]),
      NetworkImage(imageList[1]),
      NetworkImage(imageList[2]),
      ExactAssetImage("assets/images/LaunchImage.jpg")
    ],
  )

或者,使用 ListView.builder 遍历您的列表并使用索引

ListView _buildList(context) 
    return ListView.builder(
                itemCount: imageList.length,
                itemBuilder: (context, int) 
            return Carousel(
                       images: [
                            NetworkImage(imageList[int]),
                            ExactAssetImage("assets/images/LaunchImage.jpg")
    ],
  );
      ,
    );
  

【讨论】:

我怎样才能遍历这个轮播(图像:[ NetworkImage(imageList[0]), NetworkImage(imageList[1]), NetworkImage(imageList[2]), ExactAssetImage("assets/images/ LaunchImage.jpg") ], ) , url 的数量会有所不同 不能使用 ListView.builder 在包页面上,开发人员将示例用作Carousel 作为SizedBox 的子代。再次尝试使用 ListView,这次返回 SizedBox【参考方案3】:

您可以使用map来制作NetworkImage的列表:

images: imageURLs.map((String url) 
  return new NetworkImage(url));
).toList(),

imageURLs 是图片的列表 url

【讨论】:

这段代码也不起作用,我认为是因为那个小部件使用了另一个小部件。 抱歉,我更改了小部件。现在我无法检查错误。【参考方案4】:

首先创建一个NetworkImage的List:

List<NetworkImage> productImage = [];

然后您需要创建一个函数,使您能够将网络图像字符串列表添加到您的 productImage 列表中。

static List<NetworkImage> productAssets(List<String> images) 
    List<NetworkImage> asset = List<NetworkImage>();

    for (String item in images) 
      asset.add(NetworkImage(item));
    

    return asset;
  

上面的函数接受图像字符串列表并返回网络图像列表。

您现在需要做的是使用列表 (productAssets) 解析网络图像 URL 的字符串,以将它们添加到您的轮播图像中。

productImages: productAssets(['http://www.image1.com', 'http://www.image2.com']);

您现在要做的就是解析 Carousel Widget 中的 productImages

Carousel (
   images: productAssets,
)

【讨论】:

以上是关于如何在 Flutter 中创建网络图像列表的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter 中创建图像轮播

如何在Flutter(2021)中创建过滤器搜索列表视图

如何在包含图像和计数帖子的页面中创建列表标签

如何在 Flutter for android 中创建这种线性渐变不透明度效果?

如何在 J2me 中创建具有多行和多列的列表?

在原生android中创建像flutter一样的高度卡