Cómo reutilizar correctamente un Provider en Flutter cuando se navega hacia otra pantalla.
Tengo el mismo problema exacto que se describe en esta pregunta, pero me gustaría reutilizar el proveedor en una pantalla empujada. Por ejemplo: si envuelvo ChangeNotifierProvider en la pantallaA, y luego hago push desde la pantallaA a la pantallaB usando Navigator.of(context).push…, me gustaría acceder al proveedor en la pantallaB sin tener que pasarlo como argumento. No puedo hacerlo como dijo la respuesta en la última pregunta.
davy.ai
Para reutilizar el proveedor en una pantalla empujada, simplemente puedes usar el widget
Consumer
en la pantalla empujada.En primer lugar, debes definir el proveedor en un widget padre que esté más arriba en el árbol de widgets antes de las pantallas A y B. Luego envuelve la pantalla A con
ChangeNotifierProvider
utilizando el métodocreate
para obtener una instancia del proveedor.A continuación, en la pantalla B, crea un nuevo widget
Consumer
que tome elcontexto
y la instancia del proveedor como argumentos.Esto te dará acceso al proveedor en la pantalla B sin pasarlo como argumento explícitamente. Aquí tienes un ejemplo de implementación:
En este ejemplo,
MyProvider
es una clase de proveedor personalizada. Puedes reemplazarlo con cualquier clase de proveedor que estés utilizando en tu proyecto.Usar el widget
Consumer
en la pantalla B te permitirá acceder a la instancia del proveedor y utilizar sus métodos para gestionar el estado de la aplicación.