As colunas de navegação oferecem acesso a destinos em apps executados em dispositivos com telas grandes. Use colunas de navegação para:
- Destinos de nível superior que precisam estar acessíveis em qualquer lugar de um app
- Três a sete destinos principais
- Layouts de tablet ou computador
Esta página mostra como exibir colunas no app com telas relacionadas e navegação básica.
Superfície da API
Use o NavigationRail combinável com NavigationRailItem para
implementar uma coluna no aplicativo. O NavigationRailItem representa um único item de coluna na coluna de navegação.
NavigationRailItem inclui os seguintes parâmetros principais:
selected: determina se o item de coluna 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 da coluna. É aqui que você normalmente processa eventos de navegação, atualiza o estado do item de coluna selecionado ou carrega o conteúdo correspondente.label: mostra o texto no item da coluna. Opcional.icon: mostra um ícone no item da coluna. Opcional.
Exemplo: navegação baseada em colunas
O snippet a seguir implementa uma coluna de navegação para que os usuários possam navegar entre diferentes telas em um app:
@Composable fun NavigationRailExample(modifier: Modifier = Modifier) { val navController = rememberNavController() val startDestination = Destination.SONGS var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) } Scaffold(modifier = modifier) { contentPadding -> NavigationRail(modifier = Modifier.padding(contentPadding)) { Destination.entries.forEachIndexed { index, destination -> NavigationRailItem( selected = selectedDestination == index, onClick = { navController.navigate(route = destination.route) selectedDestination = index }, icon = { Icon( destination.icon, contentDescription = destination.contentDescription ) }, label = { Text(destination.label) } ) } } AppNavHost(navController, startDestination) } }
Pontos principais
NavigationRailmostra uma coluna vertical de itens de coluna, com cada item correspondendo a umDestination.val navController = rememberNavController()cria e lembra uma instância deNavHostController, que gerencia a navegação em umNavHost.var selectedDestination by rememberSaveable { mutableIntStateOf(startDestination.ordinal) }gerencia o estado do item de coluna selecionado no momento.startDestination.ordinalrecebe o índice numérico (posição) da entrada de enumeraçãoDestination.SONGS.
- Quando um item de coluna é clicado,
navController.navigate(route = destination.route)é chamado para navegar até a tela correspondente. - O lambda
onClickdoNavigationRailItematualiza o estadoselectedDestinationpara destacar visualmente o item de coluna clicado. - Ele chama o elemento combinável
AppNavHost, transmitindo onavControllere ostartDestination, para mostrar o conteúdo real da tela selecionada.
Resultado
A imagem a seguir mostra o resultado do snippet anterior: