No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Flutter

Curso de Flutter

Alison Jimenez

Alison Jimenez

Navegación entre Pantallas en Flutter

12/26
Recursos

Las aplicaciones modernas suelen requerir múltiples pantallas para organizar sus funcionalidades de manera eficiente. Aquí exploraremos cómo crear una nueva pantalla en Flutter, navegar entre ellas y pasar datos de una a otra, logrando una experiencia de usuario dinámica.

¿Cómo se crea una nueva pantalla en Flutter?

  • Crea un archivo para la nueva pantalla, por ejemplo, recipe_detail.dart.
  • Define un StatefulWidget llamado RecipeDetail para mantener el estado de la pantalla.
  • Importa el paquete material.dart para acceder a las herramientas de diseño de Flutter.
  • Usa un Scaffold para estructurar la página:
    • Incluye una AppBar con un botón que permita regresar a la pantalla anterior.
    • Agrega un ícono, como Icons.arrow_back, configurado con un color contrastante para destacarlo.

Código clave:

AppBar(
  leading: IconButton(
    icon: Icon(Icons.arrow_back, color: Colors.white),
    onPressed: () => Navigator.pop(context),
  ),
  backgroundColor: Colors.orange,
  title: Text('Detalle de Receta'),
)

¿Cómo se navega desde la pantalla principal a la nueva pantalla?

  1. Usa un GestureDetector para capturar eventos de clic en elementos como tarjetas o botones.
  2. Implementa la función Navigator.push() para redirigir al usuario:
    • Define un MaterialPageRoute que apunta a la nueva pantalla.
    • Asegúrate de importar el archivo correspondiente.

Código clave:

GestureDetector(
  onTap: () {
    Navigator.push(
      context,
      MaterialPageRoute(builder: (context) => RecipeDetail(recipeName: 'Lasaña')),
    );
  },
  child: Card(
    child: Text('Ver detalle'),
  ),
)

¿Cómo se pasa información entre pantallas?

  • Define un constructor en la nueva pantalla para recibir datos, como el nombre de una receta.
  • Usa el modificador final para garantizar que los datos sean inmutables.
  • Muestra la información recibida en un widget, como un Text.

Código clave:

class RecipeDetail extends StatelessWidget {
  final String recipeName;

  const RecipeDetail({Key? key, required this.recipeName}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(recipeName),
        backgroundColor: Colors.orange,
      ),
      body: Center(
        child: Text('Receta: $recipeName'),
      ),
    );
  }
}

¿Cómo asegurar la navegación inversa?

  • Implementa el método Navigator.pop(context) en el botón de regreso.
  • Flutter maneja automáticamente el historial de navegación, asegurando que el usuario pueda regresar sin complicaciones.

¿Qué podemos lograr con esta funcionalidad?

  • Crear pantallas dinámicas que presenten detalles específicos basados en datos enviados desde la pantalla principal.
  • Facilitar una navegación fluida entre secciones de la aplicación, mejorando la usabilidad.

Aportes 3

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Extendiendo un poco lo visto en esta clase sobre la navegación. 🚀 **Flutter usa un sistema basado en pilas** para la navegación: `Navigator.push()` añade pantallas y `Navigator.pop()` las elimina. * **Pasar datos entre pantallas** es sencillo usando argumentos en `MaterialPageRoute`. * **Retornar datos**: Usa `Navigator.pop(context, data)` para devolver información a la pantalla anterior. * **Animaciones personalizadas**: Personaliza transiciones con `PageRouteBuilder`. * **Deep linking**: Usa `onGenerateRoute` o `go_router` para manejar enlaces y rutas complejas.
Imagina una aplicación como un edificio con varias salas (pantallas). Cada sala tiene una función específica, como una cocina (pantalla de inicio) o un comedor (pantalla de detalle de receta). Cuando navegas entre las salas, usas métodos de navegación. "Navigator.push" sería como abrir la puerta a una nueva sala, mientras que "Navigator.pop" es como regresar a la sala anterior. Al pasar información (como el nombre de un platillo), sería como llevar un mensaje escrito al entrar en una nueva sala. Esta analogía simplifica cómo interactuamos con las pantallas en Flutter, facilitando la comprensión de la navegación en aplicaciones.
Un poco de creatividad usando los conceptos de navegación: ![](https://static.platzi.com/media/user_upload/image-ea83476a-dcbe-4e94-968c-ba68771837af.jpg) ![](https://static.platzi.com/media/user_upload/image-8656d812-13f7-4030-9f56-3d5a184c4c1f.jpg) ![](https://static.platzi.com/media/user_upload/image-32e02ead-836d-4570-b1c1-d5212c1b6c58.jpg)