Controle NavigationBar
NavigationBar é um componente da barra de navegação no estilo Material 3. Barras de navegação são dispostas ao fundo da página do aplicativo e podem conter diversos controles de seleção, chamados NavigationBarDestination que podem ser selecionados com um clique. Essa é uma forma conveniente de alternar entre destinos em um aplicativo.
Propriedades de NavigationBar
As seguintes propriedades estão definidas para o controle NavigationBar:
Propriedade | Descrição |
---|---|
adaptive | booleano, default False. Se adaptive=True uma barra adaptável será criada. No iOS/MacOS uma CupertinoNavigationBar é criada, com funcionalidade e apresentação correspondentes ao padrão do iOS. Em outras plataformas a barra tem a apresentação do estilo Material. |
animation_duration | tempo de transição para os ícones de destino para mudar de selecionado para não selecionado. |
bgcolor | cor da barra de navegação. |
destinations | define os botões dispostos dentro da barra de navegação, inclusive sua aparência. Deve ser uma lista de duas ou mais instâncias de NavigationBarDestination. |
elevation | elevação da barra de navegação. |
indicator_color | cor do indicador de destino selecionado. |
indicator_shape | formato do indicador de destino selecionado. O valor é do tipo OutlinedBorder. |
label_behavior | define a disposição dos rótulos de destinos e quando serão exibidos.É possível exibir ou ocultar todos os rótulos, ou mostrar apenas aquele selecionado. O valor é do tipo NavigationBarLabelBehavior e o padrão é NavigationBarLabelBehavior.ALWAYS_SHOW (sempre exibido). |
overlay_color | cor de destaque do NavigationDestination em vários estados† ControlState. Os seguintes valores de ControlState são suportados: PRESSED, HOVERED e FOCUSED. |
selected_index | índice do destino selecionado (o último NavigationBarDestination selecionado), ou None se nenhum destino foi selecionado. |
shadow_color | cor usada na sombra que indica elevação. |
surface_tint_color | tonalidade da superfície Material que contém o conteúdo do NavigationDrawer. |
Nota † ControlState é um enum com os valores: DEFAULT, DISABLED, DRAGGED, ERROR, FOCUSED, HOVERED, PRESSED, SELECTED, SCROLLED_UNDER.
Eventos da NavigationBar
Os controles NavigationBarDestination não possuem nenhum evento associado. O único evento do conjunto está na troca de seleção entre as opções dispostas na NavigationBar.
Evento | Descrição |
---|---|
on_change | dispara quando o destino é alterado, por exemplo por meio de um clique nos botões de destino. |
Propriedades de NavigationBarDestination
Propriedade | Descrição |
---|---|
bgcolor | cor do botão de destino. |
icon | nome do ícone do botão de destino. |
icon_content | ícone usado dentro do destino (em vez da propriedade icon). Se selected_icon_content for fornecido essa propriedade só será exibida quando o destino não estiver selecionado. |
label | rótulo (texto) que aparece abaixo do ícone do NavigationBarDestination. |
selected_icon | ícone alternativo para exibição quando o destino é selecionado. |
selected_icon_content | um controle de ícone alternativo exibido quando este destino é selecionado. Se este controle não for fornecido, a NavigationBar exibirá icon_content em qualquer estado. |
Exemplo de Uso da NavigationBar e NavigationBarDestination
import flet as ft def main(page: ft.Page): page.horizontal_alignment = "center" page.bgcolor=ft.colors.BLUE_100 page.title = "Exemplo de NavigationBar" controle=["Explorar", "Carona", "Ônibus", "Apagar"] def mostrar_barra(e): nav_barra.visible=not nav_barra.visible bt.text=f"{'Ocultar' if nav_barra.visible else 'Exibir'} Barra de Navegação" mensagem.value += f"\nVocê {'exibiu' if nav_barra.visible else 'ocultou'} a Barra de Navegação" page.update() def mudou_destino(e): if e.control.selected_index==3: mensagem.value="Suas ações serão vistas aqui:\n" else: mensagem.value += f"\nVocê selecionou o botão {controle[e.control.selected_index]}" page.update() nav_barra=ft.NavigationBar( visible=False, destinations=[ ft.NavigationBarDestination(icon=ft.icons.EXPLORE, label="Explorar"), ft.NavigationBarDestination(icon=ft.icons.PERSON, label="Carona"), ft.NavigationBarDestination(icon=ft.icons.DIRECTIONS_BUS, label="Ônibus"), ft.NavigationBarDestination( icon=ft.icons.HIDE_IMAGE, selected_icon=ft.icons.HIDE_SOURCE, label="Apagar" ), ], on_change=mudou_destino ) page.navigation_bar = nav_barra mensagem=ft.Text("Suas ações serão vistas aqui:\n", color=ft.colors.BLACK) bt=ft.ElevatedButton("Exibir NavigationBar", on_click=mostrar_barra) page.add(bt, mensagem) ft.app(target=main)
A figura 1 mostra o estado do aplicativo em execução. A primeira imagem é o estado após a exibição da barra de navegação e clique no botão Explorar. Ao lado o resultado do clique no botão Apagar.