diegoRodicio

View Categories

📤 Pasar datos cunha ruta nomeada

Ata agora utilizamos Navigator.pushNamed() para abrir unha pantalla indicando o nome da súa ruta. Pero, en ocasións, tamén necesitamos enviarlle información á pantalla que imos abrir.

Por exemplo, imaxinemos que queremos enviar o nome dun grupo desde PantallaInicio ata PantallaGrupo, para que esta última o mostre.

Envío do nome do grupo a outra pantalla mediante arguments
Envío do nome do grupo a outra pantalla mediante arguments

📦 Enviar os datos

Para enviar información utilizamos o parámetro arguments de Navigator.pushNamed():

Navigator.pushNamed(
  context,
  '/grupo',
  arguments: '2º DAM',
);

Neste código:

  • '/grupo' indica a pantalla que queremos abrir.
  • arguments: '2º DAM' envía o texto '2º DAM' a esa pantalla.

💡 Podemos enviar diferentes tipos de datos, como textos, números ou listas.

📥 Recibir os datos

Na pantalla de destino necesitamos recuperar a información enviada. Para iso utilizamos:

final grupo = ModalRoute.of(context)!.settings.arguments as String;

Esta instrución pode parecer complicada, pero imos dividila:

  • ModalRoute.of(context) permite acceder á información da ruta actual.
  • .settings.arguments recupera os datos que recibiu esa ruta.
  • as String indica que esperamos recibir un texto.

O resultado gárdase na variable grupo, que podemos utilizar para mostrar o nome recibido:

Text(grupo)

💡 Neste exemplo sabemos que sempre enviamos un texto, polo que utilizamos as String. Se o dato recibido non fose un texto, produciríase un erro. Ademais, ! indica que esperamos que exista unha ruta asociada ao contexto.

🧪 Exemplo completo

Neste exemplo, a pantalla inicial envía o nome do grupo e a segunda pantalla recíbeo e móstrao.

🔗 DartPad:

Código para enviar e recibir datos cunha ruta nomeada
Código para enviar e recibir datos cunha ruta nomeada

🔍 Que sucede ao executar o programa?

  1. A aplicación mostra PantallaInicio.
  2. Ao premer «Abrir grupo», executamos pushNamed() e enviamos o texto '2º DAM' mediante arguments.
  3. Flutter abre PantallaGrupo.
  4. A nova pantalla recupera o texto recibido mediante ModalRoute.of(context)!.settings.arguments.
  5. O texto móstrase na pantalla utilizando a variable grupo.

Deste xeito, podemos enviar información dunha pantalla a outra sen ter que escribir directamente os datos na pantalla de destino.

💡 Lembra: podemos enviar datos entre pantallas de dúas formas:

  • Con MaterialPageRoute: enviamos os datos directamente ao construtor da pantalla.
  • Con Navigator.pushNamed(): enviamos os datos mediante arguments e recuperámolos na pantalla de destino.

Neste exemplo sabemos que sempre recibiremos un texto. En aplicacións máis complexas, debemos comprobar que os datos recibidos son do tipo esperado antes de utilizalos.