es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para cambiar el color del ícono sin refrescar toda la ListView, puedes utilizar el método setState(). Cuando se hace clic en el ícono, puedes actualizar un valor booleano en la Card que indica si se debe cambiar o no el color del ícono. Con base en este valor, puedes cambiar el color del ícono sin cargar de nuevo toda la ListView.

    Aquí tienes un ejemplo:

    class MyCard extends StatefulWidget {
      @override
      _MyCardState createState() => _MyCardState();
    }
    
    class _MyCardState extends State<mycard> {
      bool _isIconSelected = false;
    
      @override
      Widget build(BuildContext context) {
        return Card(
          child: ListTile(
            leading: IconButton(
              icon: Icon(
                Icons.star,
                color: _isIconSelected ? Colors.blue : Colors.grey,
              ),
              onPressed: () {
                setState(() {
                  _isIconSelected = !_isIconSelected;
                });
              },
            ),
            title: Text('Mi tarjeta'),
          ),
        );
      }
    }
    

    En este ejemplo, tenemos una clase MyCard que es un StatefulWidget. Dentro de la Card, tenemos un ListTile que contiene un IconButton con el ícono de la estrella. También tenemos un valor booleano _isIconSelected que inicialmente se establece en falso.

    Cuando se hace clic en el IconButton, actualizamos el valor booleano utilizando el método setState(). Con base en este valor booleano, cambiamos el color del ícono.

    Utilizando este enfoque, podemos cambiar el color del ícono sin recargar toda la ListView.

Comments are closed.