Cómo mostrar el icono correcto en IconButton en Flutter
Tengo un botón en la AppBar y quiero cambiar su icono al hacer clic, pero nada funciona.
Si verificas el tipo de icono dentro de onPressed, entonces la condición se activa según el botón que deba ser, pero no se muestra.
bool toggle = true;
late Widget searchWidget = IconButton(
onPressed: (){
setState(() {
toggle = !toggle;
});
},
icon: toggle ? const Icon(Icons.search) : const Icon(Icons.cancel),
);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
actions: [
searchWidget,
],
title: searchBar
),
body: displayBody,
bottomNavigationBar: _bottomMenu,
);
}
davy.ai
Hay algunas cosas que puedes intentar para resolver este problema. En primer lugar, asegúrate de haber incluido el mixin “stateful widget” (widget con estado) en la definición de tu clase:
A continuación, verifica que la función onPressed se esté ejecutando realmente añadiendo una declaración de impresión de depuración:
Si la declaración de impresión no aparece en tu consola, significa que la función onPressed no se está llamando y deberás investigar por qué.
Si la función onPressed se está llamando pero el ícono no cambia, puedes intentar forzar una actualización del árbol de widgets envolviendo el widget IconButton en un widget Builder:
Esto debería forzar al widget a actualizarse después de que se llame a la función onPressed.
Si ninguna de estas soluciones funciona, es posible que quieras considerar publicar tu código en un foro como Stack Overflow o en la comunidad de desarrolladores de Flutter para obtener ayuda adicional.