Flutter – Lista de imágenes dinámicas

La lista de imágenes dinámicas es la lista de imágenes cuando agregamos imágenes dinámicamente. En este artículo, veremos cómo agregar imágenes dinámicamente a la lista de imágenes. Es algo así como que estamos agregando algunos elementos a la lista. No hay necesidad de agregar dependencia a nuestro proyecto. A continuación se muestra un video de muestra para tener una idea de lo que vamos a hacer en este artículo.

Implementación paso a paso

Paso 1 : crea un proyecto vacío. Y agregue la biblioteca de materiales al archivo principal .

Dart

import 'package:flutter/material.dart';

Paso 2 : ahora llame al método principal , en este ejecute el método runApp que ejecutará nuestra aplicación o clase.

Dart

void main() => runApp(A4Run());

Paso 3 : Ahora tenemos que crear un widget con estado A4Run .

¿Por qué con estado?

Porque estamos implementando dinámicamente para que el estado de la aplicación cambie. Cree una clase A4Run con estado . Y devuelva el andamio, agregue AppBar.

Dart

class A4Run extends StatefulWidget {
  A4Run() : super();
  
  @override
  A4RunState createState() => A4RunState();
}
class A4RunState extends State<A4Run> {
    @override
  Widget build(BuildContext context) {
    // finding length of the list
    var ImgCount=imgList.length; 
  
    // scaffold with appbar 
    return Scaffold( 
      // appbar with leading icon and title
      appBar: AppBar(
        leading:Icon(Icons.image),
        title: Text("Dynamic Add Image List"),
      ),
      );
  }
}

En el proyecto, estamos usando tres imágenes y haciendo la lista de ellas imgList , de modo que seleccionamos selecciones aleatorias de la lista dinámicamente y luego agregamos imágenes nuevamente a la lista.

Dart

// list of images
List imgList = [  
    Image.asset('Images/S1.png'),
    Image.asset('Images/S3.png'),
    Image.asset('Images/S2.png'),
  ];

No olvide agregar la imagen en el activo del archivo pubspec.yaml . De lo contrario, esto arrojará un error. Puede consultar este artículo para lo mismo. El proceso de pensamiento es que haremos que ListView y Add item cuenten y un botón para agregar la imagen. y adjuntar la imagen. 

Paso 4 : ahora en el cuerpo del andamio , cree un widget ListView. En ListView primero, usaremos la fila para mostrar el recuento de elementos y un botón. Ahora agregue un niño más a la vista de lista, que mostrará la lista de imágenes.

Dart

body:
    Padding(
      padding: const EdgeInsets.all(12.0),
      // listview with scroll
      // direction vertical
      child: ListView ( 
        scrollDirection: Axis.vertical, 
        // listview children 
        children: [ 
          Row(
            children: [
              // image count in the list
              // or length of the list
              Text("Image Count:$ImgCount"), 
              SizedBox(width:45),
              // icon button to add 
              // the image to the list
              FlatButton.icon( 
                icon:Icon(Icons.add),
                label:Text("Add Image"),
                // when pressed call
                // the add method 
                onPressed:(){   
                   
                },
              )
            ]
             // traversal in the list
             // and display each image .
             for(var item in imgList)
            Center(
              child:Container(
                  width:200,
                  height:150,
                  child:item
              ),
            )
          ),
        ],
        ),
      ),

Paso 5 : Ahora haga un método que tome las imágenes aleatorias para la lista y luego vuelva a agregarlas a la lista.

Dart

// AddRandomImage method to add
// the image to the list  
void AddRandomImage(){
    // random image select in range 0-3
    var RandImgIndex=new Random().nextInt(3); 
  
    // if index =0 pick image that is on 0 index 
    if(RandImgIndex==0){ 
      imgList.add(Image.asset('Images/S1.png'));
    }
    // if index =1 pick image at index 1
    else if(RandImgIndex==1){ 
      imgList.add(Image.asset('Images/S2.png'));
    }
    // pick image at 3 index
    else{  
      imgList.add(Image.asset('Images/S3.png'));
    }
  }

Paso 6 : Y finalmente, en la propiedad presionada, llame al método setState y en él llame al método AddRandomImage .

Dart

onPressed:(){
   // setstate method to call the
   // method AddRandomImage 
   setState(() {  
        AddRandomImage();
      });
},

Código completo

Dart

import 'dart:math';
import 'package:flutter/material.dart';
  
// main method with runapp runs the class A4Run
void main() => runApp(A4Run());
  
class A4Run extends StatefulWidget {
  A4Run({Key? key}) : super(key: key);
  
  @override
  A4RunState createState() => A4RunState();
}
  
class A4RunState extends State<A4Run> {
  // list of images 
  List imgList = [
    Image.asset('Images/S1.png'),
    Image.asset('Images/S3.png'),
    Image.asset('Images/S2.png'),
    Image.asset('Images/S2.png'),
  ];
      
  // method to add images dynamically
  void AddRandomImage() {
    var RandImgIndex = Random().nextInt(3);
      
    // if index is 0 we will pick image at index 0
    if (RandImgIndex == 0) {
      imgList.add(Image.asset('Images/S1.png'));
      // if index is 1 we will pick image at index 1
    } else if (RandImgIndex == 1) {  
      imgList.add(Image.asset('Images/S2.png'));
    } else {  
      // if index is 2 we will pick image at index 2
      imgList.add(Image.asset('Images/S3.png'));
    }
  }
  
  @override
  Widget build(BuildContext context) {
    // count of the list of image
    var ImgCount = imgList.length; 
  
    // MaterialApp with debugShowCheckedModeBanner false
    return MaterialApp(  
      debugShowCheckedModeBanner: false,
      home: Scaffold( 
        appBar: AppBar(
          leading: Icon(Icons.image),
          title: Text("Dynamic Add Image List"),
        ),
        body: Padding(
          padding: EdgeInsets.all(12.0),
          // list view to show images and list count
          child: ListView(  
            scrollDirection: Axis.vertical,
            children: [
              Row(children: [
                // showing item count
                Text("Image Count:$ImgCount"), 
                SizedBox(width: 45),
                // icon button to call the
                // method AddRandomImage 
                OutlinedButton.icon( 
                  icon: Icon(Icons.add),
                  label: Text("Add Image"),
                  onPressed: () {
                    setState(() {
                      // calling method
                      AddRandomImage(); 
                    });
                  },
                )
              ]),
              // showing list of images
              for (var item in imgList)
                Center(
                  child: Container(width: 500, height: 350, child: item),
                )
            ],
          ),
        ),
      ),
    );
  }
}

Producción

Publicación traducida automáticamente

Artículo escrito por ms471841 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *