BottomNavigationBar en Flutter: ejercicio resuelto con IndexedStack

BottomNavigationBar en Flutter: ejercicio resuelto

Si buscas BottomNavigationBar en Flutter, este ejemplo usa IndexedStack para mantener estado en cada pestaña.

Enunciado

Crea tres pestañas (Inicio, Buscar, Perfil) y conserva contenido al cambiar de tab.

Solución en Flutter

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import 'package:flutter/material.dart';

void main() => runApp(const MaterialApp(home: TabsPage()));

class TabsPage extends StatefulWidget {
  const TabsPage({super.key});

  @override
  State<TabsPage> createState() => _TabsPageState();
}

class _TabsPageState extends State<TabsPage> {
  int index = 0;

  final pages = const [
    Center(child: Text('Inicio')),
    Center(child: Text('Buscar')),
    Center(child: Text('Perfil')),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('BottomNavigationBar')),
      body: IndexedStack(index: index, children: pages),
      bottomNavigationBar: BottomNavigationBar(
        currentIndex: index,
        onTap: (i) => setState(() => index = i),
        items: const [
          BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Inicio'),
          BottomNavigationBarItem(icon: Icon(Icons.search), label: 'Buscar'),
          BottomNavigationBarItem(icon: Icon(Icons.person), label: 'Perfil'),
        ],
      ),
    );
  }
}

Resultado esperado

El cambio de pestañas es rápido y cada tab conserva su estado.

Errores frecuentes

  • Usar body = pages[index] y perder estado en tabs.
  • No sincronizar currentIndex.
  • Mezclar navegación de tabs con push/pop sin estrategia.

Aplicación práctica

Se usa en apps de e-commerce, banca, medios y herramientas internas con módulos claros.

Siguiente ejercicio recomendado

Práctica guiada y siguiente paso

FAQ

¿Cómo mantener estado entre tabs en Flutter?

Usando IndexedStack, AutomaticKeepAliveClientMixin o soluciones de estado global.

¿BottomNavigationBar sigue siendo buena opción?

Sí, para navegación principal en apps con 3 a 5 secciones clave.

¿Qué alternativa hay para más de 5 secciones?

Combinar tabs con drawer o usar navegación jerarquica por módulo.