Cómo Actualizar Elevada Botón de título Pulsa en Particular, el índice de ListView.el generador de

0

Pregunta

Aquí está mi código.

bool isAddedToCart = false;
return ListView.builder(
........
 ElevatedButton (
                        child: isAddedToCart? Text('Added to cart') : Text('Add to cart'),
                         style: ElevatedButton.styleFrom(
                           primary: Constants.primaryColor,
                           onPrimary: Constants.appColor
                         ),
                         onPressed: () async{
                           setState(() {
                             isAddedToCart = !isAddedToCart;
                           });
                           
                         },
                      
                       ),

El problema es que si hago clic en que la elevación de Botón el texto del botón tiene que cambiar en ese índice único. Pero está cambiando en todo el índice que se encuentran en listview.el generador.

¿Se puede tener una solución para esto que sólo un botón de índice seleccionada se tiene que actualizar con el nombre cambiado.

flutter
2021-11-24 05:13:26
2

Mejor respuesta

2

Usted necesidad de mantener la bandera isAddedToCart para cada índice. Usted puede lograr esto mediante el uso de un Map. Algo como esto:

// class variable scope.
Map<int, bool> isAddedToCartMap = {};

a continuación, utilice en su widget:

ElevatedButton (
    // if isAddedToCartMap[index] not found, use false as default value.
    child: isAddedToCartMap[index]??false ? Text('Added to cart') : Text('Add to cart'),
     style: ElevatedButton.styleFrom(
       primary: Constants.primaryColor,
       onPrimary: Constants.appColor
     ),
     onPressed: () async{
       setState(() {
         isAddedToCartMap[index] = !isAddedToCartMap[index]??false;
       });
       
     },
  
   ),
2021-11-24 05:24:43

su trabajo bien, tengo un dout.. Cómo actualizar el mismo botón 'Añadir al carrito' de nuevo. gracias por la respuesta @ישו אוהב אותך
H ă ɤ í
1

Todos los artículos fueron depende de isAddedToCart pero Usted necesita para almacenar el elemento seleccionado con sala de indexación

List<int> _selected_item = List();

 ElevatedButton(
              child: _selected_item.contains(index)
                  ? Text('Added to cart')
                  : Text('Add to cart'),
              style: ElevatedButton.styleFrom(),
              onPressed: () async {
                setState(() {
                  // remove or add index to _selected_item
                  if (_selected_item.contains(index))
                    _selected_item.remove(index);
                  else
                    _selected_item.add(index);
                  print(index);
                });
              },
            )

el código fuente completo

ListView.builder(
          itemCount: 5,
          itemBuilder: (context, index) {
            return ElevatedButton(
              child: _selected_item.contains(index)
                  ? Text('Added to cart')
                  : Text('Add to cart'),
              style: ElevatedButton.styleFrom(),
              onPressed: () async {
                setState(() {
                  // remove or add index to _selected_item
                  if (_selected_item.contains(index))
                    _selected_item.remove(index);
                  else
                    _selected_item.add(index);
                  print(index);
                });
              },
            );
          })
2021-11-24 06:01:37

@GH usted puede probar esta espero que, va a trabajar para usted
Jahidul Islam

que fue super. gracias.
H ă ɤ í

fue llegar a la predeterminada cuando se recarga. Podemos hacerlo utilizando el modelo, si sí, ¿cómo?
H ă ɤ í

usted debe seguir este enlace stackoverflow.com/questions/57380673/...
Jahidul Islam

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................