🧭 Escoller unha sección
Unha barra inferior permite cambiar entre as seccións principais dunha aplicación. Colocámola no parámetro bottomNavigationBar de Scaffold.
Usaremos BottomNavigationBar para continuar cos exemplos dos apuntamentos. Flutter tamén ofrece NavigationBar, a opción recomendada para o deseño Material 3; veremos a equivalencia en «Para saber máis».
Esta captura mostra a idea dunha barra inferior con dúas opcións:

🔄 Aplicar o estado á selección
Para cambiar de sección precisamos lembrar cal está seleccionada. Ese dato é o estado da pantalla.
Aplicamos as tres pezas que vimos no Tema 3.3:
StatefulWidgetrepresenta un widget con estado asociado.- A clase
Stategarda_indiceActual:0para a primeira sección e1para a segunda. setStateavisa a Flutter de que cambiou o dato e hai que volver construír a interface.
O método da clase State que cambia a selección é:
void seleccionar(int indice) {
setState(() {
_indiceActual = indice; // Cambiamos o dato e solicitamos actualizar a pantalla.
});
}
Non abonda con cambiar o número: a barra debe recibir ese valor en currentIndex, e o body debe escoller o contido correspondente.
⚙️ Propiedades principais
| Propiedade | Para que serve? |
|---|---|
items | Lista de opcións, cada unha cunha icona e unha etiqueta. |
currentIndex | Índice da opción seleccionada. |
onTap | Callback que recibe o índice premido. |
type | fixed mantén a distribución; shifting engade transicións entre opcións. |
selectedItemColor / unselectedItemColor | Cores das opcións seleccionadas e restantes. |
🧪 Exemplo completo
As dúas seccións comparten o mesmo Scaffold. Ao premer «Centro» ou «Perfil», cambiamos o contido do body. A barra superior e a barra inferior seguen sendo as mesmas.
🔗 DartPad:
Comeza cun número pequeno de seccións. A navegación entre pantallas independentes e o paso de datos quedan para o Tema 3.5.

🔍 Que sucede ao premer «Perfil»?
onTapchama aseleccionar(1), porque «Perfil» é a segunda opción.- Dentro de
setState, gardamos1en_indiceActual. - Flutter volve executar
build. currentIndexfai que a barra marque «Perfil»._contidos[_indiceActual]selecciona o segundo widget da lista e móstrao nobody.
💡 A orde debe coincidir: a primeira opción da barra corresponde ao primeiro elemento de
_contidos, a segunda ao segundo, etc.📚 Consulta: