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.

📦 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.argumentsrecupera os datos que recibiu esa ruta.as Stringindica 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:

🔍 Que sucede ao executar o programa?
- A aplicación mostra
PantallaInicio. - Ao premer «Abrir grupo», executamos
pushNamed()e enviamos o texto'2º DAM'mediantearguments. - Flutter abre
PantallaGrupo. - A nova pantalla recupera o texto recibido mediante
ModalRoute.of(context)!.settings.arguments. - 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 medianteargumentse 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.