Flet: NavigationBar


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)
Figura 1

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.

Leave a Reply

Your email address will not be published. Required fields are marked *