12 abril, 2025
Navegación entre pantallas en Flutter
Implementar un menú interactivo en Flutter que permite navegar entre diferentes pantallas como Inicio, Empresa, Productos y Contacto. Descubre el código optimizado y las mejores prácticas para mejorar la experiencia del usuario en tu aplicación
 
              
                Suscríbete a nuestro canal en Youtube
SuscríbirseEn el desarrollo de aplicaciones móviles, la navegación intuitiva es fundamental para mejorar la experiencia del usuario. Flutter, con su rica biblioteca de widgets y herramientas, permite crear interfaces atractivas y funcionales de manera sencilla. En este post, te guiaremos a través del proceso de creación de un menú interactivo en Flutter que te permitirá navegar sin problemas entre diferentes secciones de tu aplicación, como Inicio, Empresa, Productos y Contacto. Exploraremos un código optimizado que facilita la implementación de rutas y mejora la organización del proyecto, asegurando que tu aplicación no solo sea funcional, sino también estéticamente agradable. ¡Comencemos a construir una experiencia de usuario fluida y atractiva!
Aprenderemos cómo Navegar a una nueva pantalla creando una nueva ruta y publicándola en el Navigator.
Sin embargo, si tenemos que navegar a la misma pantalla en muchas partes de nuestras aplicaciones, esto puede provocar la duplicación del código. En estos casos, puede ser útil definir una “ruta con nombre” y usarla para la Navegación.
Para trabajar con rutas con nombre, podemos usar la función Navigator.pushNamed . En este ejemplo demostraremos cómo usar rutas con nombre en su lugar.
En este trozo de programación veremos un ejemplo de como implementar interactividad entre pantallas usando para ello :
CODIGO COMPLETO DE UNA MENU INTERACTIVO CON PANTALLAS:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      initialRoute: '/',
      routes: {
        '/': (context) => Inicio(),
        '/empresa': (context) => Empresa(),
        '/productos': (context) => Productos(),
        '/contacto': (context) => Contacto(),
      },
    );
  }
}
class Inicio extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        padding: EdgeInsets.symmetric(vertical: 130, horizontal: 10),
        decoration: BoxDecoration(
          color: Colors.indigo,
          image: DecorationImage(
            image: NetworkImage("https://cdn.passporthealthglobal.com/wp-content/uploads/2018/08/vacunas-consejos-peru.jpg"),
            alignment: Alignment.topCenter,
          ),
        ),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            _buildButton(context, "INICIO", "/"),
            _buildButton(context, "EMPRESA", "/empresa"),
            _buildButton(context, "PRODUCTOS", "/productos"),
            _buildButton(context, "CONTACTO", "/contacto"),
          ],
        ),
      ),
    );
  }
  Widget _buildButton(BuildContext context, String label, String route) {
    return Padding(
      padding: const EdgeInsets.all(10),
      child: ElevatedButton(
        style: ElevatedButton.styleFrom(
          primary: Colors.white,
          shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)),
          fixedSize: Size(100, 100),
        ),
        onPressed: () {
          Navigator.pushNamed(context, route);
        },
        child: Center(
          child: Text(
            label,
            style: TextStyle(color: Colors.indigo, fontWeight: FontWeight.w900),
          ),
        ),
      ),
    );
  }
}
class Empresa extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("EMPRESA")),
      body: Center(child: Text("SECCIÓN EMPRESA")),
    );
  }
}
class Productos extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("PRODUCTOS")),
      body: Center(child: Text("SECCIÓN PRODUCTOS")),
    );
  }
}
class Contacto extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("CONTACTO")),
      body: Center(child: Text("SECCIÓN CONTACTO")),
    );
  }
}
Aquí tienes una explicación del código mejorado para el menú interactivo en Flutter:
Explicación del Código
El código presentado implementa un menú interactivo en Flutter utilizando rutas nombradas para navegar entre diferentes pantallas. A continuación, se detallan las secciones clave del código:
- 
	Importaciones y Configuración Inicial: dart import 'package:flutter/material.dart'; void main() => runApp(MyApp());Aquí importamos el paquete material.dartque proporciona componentes de Material Design y definimos la funciónmain()que inicializa la aplicación llamando aMyApp().
- 
	Clase Principal MyApp:dart class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), routes: <String, WidgetBuilder>{ "/inicio": (BuildContext context) => Inicio(), "/empresa": (BuildContext context) => Empresa(), "/productos": (BuildContext context) => Productos(), "/contacto": (BuildContext context) => Contacto(), }, home: Inicio() ); } }En esta clase, configuramos el MaterialApp, estableciendo el título y el tema de la aplicación. La propiedadroutesse utiliza para definir las rutas nombradas que permiten la navegación entre diferentes pantallas. La pantalla inicial se establece enInicio.
- 
	Clases de las Pantallas: Cada sección de la aplicación (Inicio, Empresa, Productos y Contacto) está representada por una clase StatelessWidget.- Ejemplo de la clase Inicio:
 dart class Inicio extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( body: Container( padding: EdgeInsets.all(10), decoration: BoxDecoration( color: Colors.indigo, image: DecorationImage( image: NetworkImage("https://cdn.passporthealthglobal.com/wp-content/uploads/2018/08/vacunas-consejos-peru.jpg"), alignment: Alignment.topCenter ) ), child: Column( children: <Widget>[ // Aquí se añaden los botones de navegación ], ), ), ); } }Cada clase construye una interfaz simple con un Scaffold, donde se configura un fondo (en este caso, una imagen de red) y se organiza el contenido en unColumn. Dentro de esteColumn, se pueden añadir widgets adicionales como botones de navegación.
- Ejemplo de la clase 
- 
	Botones de Navegación: Los botones están organizados en Rowy cada botón utilizaRaisedButton(oElevatedButtonen versiones más recientes de Flutter) para permitir al usuario navegar entre las diferentes pantallas.dart RaisedButton( color: Colors.white, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)), onPressed: () { Navigator.pushNamed(context, "/empresa"); }, child: Text("EMPRESA"), )En este fragmento, al presionar el botón "EMPRESA", el usuario es llevado a la pantalla de la empresa utilizando Navigator.pushNamed, que busca la ruta correspondiente y la presenta.
- 
	Estilo y Diseño: El uso de Container,Padding, yColumnpermite un diseño responsivo y organizado. El color de fondo y la imagen de fondo se establecen en elContainer, proporcionando un atractivo visual.
Leido 16793 veces | 3 usuarios
Descarga del código fuente Flutter de Navegación entre pantallas en Flutter
Accede al código fuente esencial de nuestra aplicación en formato ZIP ó TXT. Ideal para desarrolladores que desean personalizar o integrar nuestra solución.
Opciones de descarga
- Usuarios Registrados: Inicia sesión para descarga inmediata.
- Nuevos Usuarios: Regístrate y descarga.
 
                         
                 
                 
                 
                 
                             
                             
                            