¿Cómo devolver datos desde una página en Flutter utilizando Navigator 2.0?
Estoy utilizando Flutter Navigator 2.0 en mi aplicación y estoy tratando de devolver algunos datos desde otra pantalla cuando se cierra. Aquí está el código para lo mismo:
Esto es lo que estoy utilizando para abrir/agregar una nueva página. Después de que el usuario haya realizado cambios en la página de edición de perfil, estoy tratando de actualizar los datos en la página existente (página de perfil).
appState.currentAction = PageAction(
state: PageState.addPage,
widget: EditProfile(currentUserId: currentUserId),
page: Edit_Profile_PageConfig,
);
Después de realizar los cambios en la página de edición de perfil, esto es lo que estoy haciendo para cerrarla:
appState.currentAction = PageAction(state: PageState.pop);
Pero no estoy seguro de cómo puedo pasar los datos desde la página de edición de perfil de vuelta a la página de perfil. En el antiguo estilo de navegación, era bastante fácil tener una función “then”, como esta:
var callBack = await Navigator.push(
context,
MaterialPageRoute(
builder: (BuildContext context) => EditProfile(),
),
);
Pero no estoy seguro de cómo lograr esto utilizando Navigator 2.0. He consultado estas dos referencias para desarrollar la navegación en la aplicación:
davy.ai
Para enviar datos desde una pantalla cerrada utilizando Flutter Navigator 2.0, puedes hacer uso de los parámetros
RouteSettings
yonPopPage
.Primero, al navegar a la pantalla
EditProfile
, puedes pasar datos utilizando el parámetroarguments
:Luego, en tu pantalla
EditProfile
, puedes acceder a estos datos utilizando la propiedadModalRoute.of(context).settings.arguments
:Finalmente, para enviar datos de regreso a la pantalla anterior al cerrarla, puedes utilizar el parámetro
onPopPage
en tu widgetNavigator
. Esta función se llamará cuando la pantalla más superior sea cerrada y puede ser utilizada para obtener cualquier dato que haya sido enviado de regreso:En la función
onPopPage
, puedes verificar si la pantalla más superior que fue cerrada es tu pantallaEditProfile
y, de ser así, obtener cualquier dato que haya sido enviado de regreso a través del parámetroresult
. Luego, puedes realizar las acciones necesarias con estos datos antes de devolvertrue
para indicar que el cierre debe proceder.