Utilizar GlobalKey en Flutter para usar métodos de Widgets desde otros componentes

Tiempo de lectura: < 1 minuto

Hoy vamos a aprender cómo podemos utilizar GlobalKey en Flutter para poder utilizar métodos que alteran los Widgets desde otros componentes.

Puente con luces - Pexels

Lo primero que tenemos que hacer es crear una GlobalKey fuera del Widget:

final GlobalKey<SolicitudesState> solicitudesKey = GlobalKey<SolicitudesState>();

Ahora modificamos el Widget quitando las class privadas por públicas en los States (es decir quitando el _ previo que tienen en el nombre del state) (de _SolicitudesState a SolicitudesState) quedando de esta forma:

class Solicitudes extends StatefulWidget {
  const SolicitudesAmistad({Key? key}) : super(key: key);

  @override
  SolicitudesState createState() => SolicitudesState();
}

class SolicitudesState extends State<Solicitudes> {

...

Ahora generado podemos añadir el método que queremos utilizar desde fuera del Widget:

class _SolicitudesState extends State<Solicitudes> {

  @override
  void initState() {
    super.initState();
  }

  void refrescar() async {
   print("Refrescar");
  }

...

Y para llamarlo tendremos que utilizar ese GlobalKey asignandolo al Key del widget de esta forma:

final GlobalKey<SolicitudesState> solicitudesKey = GlobalKey<SolicitudesState>();

void refrescarSolicitudes(){
    solicitudesKey.currentState?.refrescar();
}

....
 Solicitudes(key: solicitudesKey),
....

Deja un comentario