Nuestros investigadores estrellas agotaron sus depósitos de café, por su búsqueda diariamente por la respuesta, hasta que Amanda encontró la contestación en Gitea así que hoy la compartimos aquí.
Solución:
Navigator.push(contexto, ruta) vs Navigator.of(contexto).push(ruta)
Navigator se utiliza para administrar la pila de páginas (rutas) de la aplicación. Cuando presione la ruta dada en la pantalla (Navegador), necesitamos obtener el Navegador correcto y luego presionar.
Navigator.of(context).push(route)
divisiones .of(context)
para obtener el Navegador correcto y .push(route)
. Navigator.of(context)
tiene parámetros opcionales, si rootNavigator
se establece en trueen su lugar se proporciona el NavigatorState desde el más lejano.
static NavigatorState of(
BuildContext context,
bool rootNavigator = false,
bool nullOk = false,
)
Navigator.push(context, route)
es un static método y hacer ambas cosas al mismo tiempo. Llama internamente Navigator.of(context).push(route)
. El navegador encierra más estrechamente el contexto dado.
static Future push(BuildContext context, Route route)
return Navigator.of(context).push(route);
pop()
es parecido a push()
.
Cuando varios Navegadores están anidados en App. La ruta de diálogo creada por showDialog(...)
El método se envía al navegador raíz. Si la aplicación tiene múltiples objetos Navigator, puede ser necesario llamar Navigator.of(context, rootNavigator: true).pop(result)
para cerrar el cuadro de diálogo en lugar de simplemente Navigator.pop(context, result)
.
No hay diferencia entre los dos, el código fuente lo confirma. Vocación
Navigator.pop(context)
en realidad llama
Navigator.of(context).pop()
Código fuente:
static bool pop(BuildContext context, [ dynamic result ])
return Navigator.of(context).pop(result);
Si te ha resultado útil nuestro artículo, sería de mucha ayuda si lo compartes con el resto entusiastas de la programación y nos ayudes a difundir nuestro contenido.