A barra de navegação permite que os usuários alternem entre destinos em um app. Use barras de navegação para:
- De três a cinco destinos de igual importância
- Tamanhos de janela compactos
- Destinos consistentes nas telas do app

Nesta página, mostramos como mostrar uma barra de navegação no app com telas relacionadas e navegação básica.
Superfície da API
Use os elementos combináveis NavigationBar
e NavigationBarItem
para
implementar a lógica de troca de destino. Cada NavigationBarItem
representa um
destino único.
O NavigationBarItem
inclui os seguintes parâmetros principais:
selected
: determina se o item atual está visualmente destacado.onClick()
: uma função lambda obrigatória que define a ação a ser realizada quando o usuário clica no item. É aqui que você normalmente processa eventos de navegação, atualiza o estado do item selecionado ou carrega o conteúdo correspondente.label
: mostra o texto no item. Opcional.icon
: mostra um ícone no item. Opcional.
Exemplo: barra de navegação na parte de baixo
O snippet a seguir implementa uma barra de navegação na parte de baixo com itens para que os usuários possam navegar entre diferentes telas em um app:
@Composable fun NavigationBarExample(modifier: Modifier = Modifier) { val navController = rememberNavController() val startDestination = Destination.SONGS var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) } Scaffold( modifier = modifier, bottomBar = { NavigationBar(windowInsets = NavigationBarDefaults.windowInsets) { Destination.entries.forEachIndexed { index, destination -> NavigationBarItem( selected = selectedDestination == index, onClick = { navController.navigate(route = destination.route) selectedDestination = index }, icon = { Icon( destination.icon, contentDescription = destination.contentDescription ) }, label = { Text(destination.label) } ) } } } ) { contentPadding -> AppNavHost(navController, startDestination, modifier = Modifier.padding(contentPadding)) } }
Pontos principais
NavigationBar
mostra uma coleção de itens, com cada item correspondente a umDestination
.val navController = rememberNavController()
cria e lembra de uma instância deNavHostController
, que gerencia a navegação em umNavHost
.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal)
} gerencia o estado do item selecionado no momento.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }
gerencia o estado do item selecionado no momento.startDestination.ordinal
recebe o índice numérico (posição) da entrada de tipo enumeradoDestination.SONGS
.
- Quando um item é clicado,
navController.navigate(route = destination.route)
é chamado para navegar até a tela correspondente. - A lambda
onClick
doNavigationBarItem
atualiza o estadoselectedDestination
para destacar visualmente o item clicado. - Ele chama o elemento combinável
AppNavHost
, transmitindo onavController
estartDestination
, para mostrar o conteúdo real da tela selecionada.
Resultado
A imagem a seguir mostra a barra de navegação resultante do snippet anterior:
