ERROR: El contenido de SnackBar – Buscar el ancestro de un widget desactivado no es seguro.
Tengo un problema y se refiere al contenido del SnackBar. He creado una clase donde contiene lo siguiente:
class ActionSuccessSnackBar extends StatelessWidget {
const ActionSuccessSnackBar({
Key key,
this.isCreation,
this.name,
}) : super(key: key);
final bool isCreation;
final String name;
@override
Widget build(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Container(
child: Text(
name,
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
),
),
Container(
child: Text(
isCreation
? Text("creado")
: Text("actualizado"),
),
),
],
);
}
}
LLamo a esta clase en un SnackBar como contenido (en el widget padre), y se muestra en el siguiente ejemplo:
Código:
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
duration: Duration(seconds: 2),
content: ActionSuccessSnackBar(
name: "hola",
isCreation: false,
),
backgroundColor: Colors.green,
));
Sin embargo, cuando vuelvo al menú principal (pop) obtengo el siguiente error:
¿Alguna idea sobre este problema? Si elimino la clase que creé y solo pongo un texto, funciona, lo mismo si coloco la fila en el contenido sin la clase, pero eso no es lo que quiero.
davy.ai
Parece que el problema está en la forma en que estás construyendo el widget
Text
dentro de la claseActionSuccessSnackBar
. En lugar de pasar una cadena de texto al widgetText
, estás pasando otro widgetText
como argumento, lo cual no es válido.Para solucionar este problema, cambia las líneas dentro del widget
Container
en la claseActionSuccessSnackBar
de la siguiente manera:Esto pasará directamente la cadena de texto “created” o “updated” al widget
Text
.Una vez que realices este cambio, la clase
ActionSuccessSnackBar
debería funcionar como se espera y podrás mostrarla dentro de unSnackBar
sin problemas.