
Flet, Layout: Page
O objeto page é o primeiro conteiner na construção da árvore de controles do Flet, sendo o único que não está ligado a um conteiner pai. Ele contém o objeto View que, por sua vez abriga todos os outros controles. Uma instância de page e uma view primária são criadas automaticamente quando uma sessão é iniciada.

Métodos de page
| Método | Ação |
|---|---|
| can_launch_url(url) | Verifica se a url pode ser acessada pelo aplicativo. Retorna True se é possível gerenciar uma URL com o aplicativo. Caso retorne False isso pode significar que não há como vertificar se o recurso está disponível, talvez devido à falta de permissões. Nas versões mais recentes do Android e iOS esse método sempre retornará False, exceto se o aplicativo for configurado com essa permissão. Na web ele retornará False exceto para esquemas específicos, pois páginas web, por princípio, não devem ter acesso aos aplicativos instalados. |
| close_banner() | Fecha o banner ativo. |
| close_bottom_sheet() | Fecha o pé de página. |
| close_dialog() | Fecha a caixa de diálogo ativa. |
| close_in_app_web_view() | Fecha visualização de página web iniciada com launch_url() de dentro do aplicativo. |
| get_clipboard() | Recupera o último texto salvo no clipboard do lado do cliente. |
| go(route) | Um método auxiliar para atualizar page.route. Ele aciona o evento page.on_route_change seguido de page.update(). |
| launch_url(url) | Abre uma URL em nova janela do navegador.
Abre uma nova página exibindo o recurso descrito na URL.
|
| page.get_upload_url(file_name, expires) | Gera URL para armazenamento de upload. |
| scroll_to(offset, delta, key, duration, curve) | Move a posição de scroll para local absoluto ou incremento relativo. Detalhes em scroll_to. |
| set_clipboard(data) | Insere conteúdo no clipboard do lado do cliente (navegador ou desktop). Ex.: page.set_clipboard("Esse valor vai para o clipboard"). |
| show_banner(banner: Banner) | Exibe um Banner no pé de página. |
| show_bottom_sheet(bottom_sheet: BottomSheet) | Exibe um BottomSheet no pé de página. |
| show_dialog(dialog: AlertDialog) | Exibe caixa de diálogo. |
| show_snack_bar(snack_bar: SnackBar) | Exibe um SnackBar no pé de página. |
| window_center() | ️ Move a janela do aplicativo para o centro da tela. |
| window_close() | ️ Fecha a janela do aplicativo. |
| window_destroy() | ️ Força o fechamento da janela. Pode ser usado com page.window_prevent_close = True para exigir a confirmação do usuário para encerramento do aplicativo.
import flet as ft
def main(page: ft.Page):
def fechar(e):
page.dialog = caixa_dialogo
caixa_dialogo.open = True
page.update()
def sim(e):
page.window_destroy()
def nao(e):
caixa_dialogo.open = False
page.update()
caixa_dialogo = ft.AlertDialog(
modal=True,
title=ft.Text("Confirme..."),
content=ft.Text("Você quer realmente fechar o aplicativo?"),
actions=[
ft.ElevatedButton("Sim", on_click=sim),
ft.ElevatedButton("Não", on_click=nao),
],
actions_alignment=ft.MainAxisAlignment.END,
)
page.add(ft.Text("Feche a janela do aplicativo clicando o botão \"Fechar\"!"))
page.add(ft.ElevatedButton("Fechar", icon="close", on_click=fechar, width=250))
ft.app(target=main)
|
| window_to_front() | ️ Traz a janela do aplicativo para o primeiro plano. |

Eventos de page
| Evento | Dispara quando |
|---|---|
| on_close | uma sessão expirou por um tempo configurado. Default: 60 minutos. |
| on_connect | o usuário da web conecta ou reconect uma sessão. Não dispara na primeira exibição de uma página mas quando ela é atualizada. Detecta a presença do usuário online. |
| on_disconnect | o usuário se desconecta de uma sessão, fechando o navegador ou a aba da página.on_error ocorre um erro não tratado. |
| on_keyboard_event | |
| on_resize | É o evento disparado quando a janela do aplicativo é redimensionada pelo usuário.
def page_resize(e):
print(f"A página foi redimensionada para: Laugura = {page.window_width}, Altura = {page.window_height})
page.on_resize = page_resize
|
| on_route_change | Evento disparado quando a rota da página é alterada no código, pela alteração da URL no navegador ou uso dos botões de avançar ou retroceder. O objeto e passado automaticamente pelo evento é uma instância da classe RouteChangeEvent:
class RouteChangeEvent(ft.ControlEvent):
route: str # passando uma nova rota para a página raiz
|
| on_scroll | a posição de scroll é alterada pelo usuário. Tem mesmo comportamento de Column.on_scroll. |
| on_view_pop | Evento disparado quando o usuário clica o botão Back na barra de controle AppBar. O objeto de evento e é uma instância da classe ViewPopEvent. class ViewPopEvent(ft.ControlEvent):
view: ft.View
sendo view uma instância do controle View, o conteiner da AppBar. |
| on_window_event | Evento disparado quando a janela do aplicativo tem uma propriedade alterada: position, size, maximized, minimized, etc. Pode ser usado com window_prevent_close=True (para interceptar sinal de close) e page.window_destroy() para implementar uma lógica de confirmação de término do aplicativo. |
Os nomes eventos de janela possíveis são: close, focus, blur, maximize, unmaximize, minimize, restore, resize, resized (macOS e Windows), move, moved (macOS e Windows), enterFullScreen e leaveFullScreen.
Bibiografia
- Python com Flet: Bibiografia Geral
- Flet Controls Galery: Galeria de Controles: Buttons
- Galeria de ícones: Icons Browser
- GitHub: Controls Galery: Galeria de Controles: Código


Bom dia, material espetacular sobre o flet. Espero que você dê continuidade.
Obrigado Alisson.
Espero sim dar sequência ao conteúdo.
Me ajude a divulgar.