0
votes

Comment créer une liste d'images réseau dans Flutter

J'utilise le package "Carousel Pro" pour implémenter un carrousel dans mon écran, dans cette classe Carousel il faut une liste d'images,

La syntaxe de la classe Carousel est

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")
    ],
  )

J'ai eu une liste d'urls d'image réseau qui est analysée à partir des données json, Comment puis-je ajouter la liste d'URL aux «images» enfants de la classe Carousel.


0 commentaires

4 Réponses :


1
votes

Cette meilleure façon serait de créer une liste / un tableau de vos images réseau et de les lister comme telles

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

Ou, utilisez un ListView.builder pour parcourir votre liste et utilisez l'index <- ce serait idéal si vous avez une liste qui varie ou peut changer pendant un état d'affichage.

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")
    ],
  )


3 commentaires

Comment puis-je parcourir ce carrousel (images: [NetworkImage (imageList [0]), NetworkImage (imageList [1]), NetworkImage (imageList [2]), ExactAssetImage ("assets / images / LaunchImage.jpg")],) , le nombre d'urls variera


Impossible d'utiliser un ListView.builder


Sur la page du package, le développeur a utilisé l'exemple en tant que Carousel tant qu'enfant d'un SizedBox . Essayez à nouveau d'utiliser ListView et renvoyez cette fois la SizedBox .



1
votes

Vous pouvez utiliser map pour créer une liste de NetworkImage:

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

with imageURLs est l'URL de la liste de vos images


2 commentaires

Ce code ne fonctionne pas non plus, je pense que c'est à cause de ce widget d'utiliser un autre widget.


Désolé, j'ai changé le widget. Maintenant, je ne peux pas vérifier l'erreur.



2
votes

C'est facile, il suffit de créer une liste NetworkImage et de l'utiliser directement comme ceci:

Carousel(
images: images
)

Et dans votre carrousel devrait être comme ça

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

J'espère que cela a été utile


0 commentaires

0
votes

Tout d'abord, créez une liste de NetworkImage:

Carousel (
   images: productAssets,
)

Ensuite, vous devrez créer une fonction qui vous permettra d'ajouter la liste des chaînes d'images réseau à votre productImage List.

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

La fonction ci-dessus prend la liste des chaînes d'images et renvoie une liste des images réseau.

Ce que vous devez faire maintenant est d'utiliser la liste (productAssets) pour analyser la chaîne d'URL d'images réseau afin de les ajouter à vos images de carrousel.

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

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

    return asset;
  }

Il ne vous reste plus qu'à analyser les images du produit dans votre widget Carousel

List<NetworkImage> productImage = [];


0 commentaires