Flet: A revolução do Desenvolvimento Multiplataforma com Python
Flet: A Revolução do Desenvolvimento Multiplataforma com Python
Autor: Hebert Aragão
Introdução

O Flet é um framework de código aberto que está redefinindo a maneira como desenvolvedores Python criam aplicações. Ele permite construir interfaces de usuário (UIs) ricas e interativas para web, desktop e mobile usando puramente Python, eliminando a necessidade de conhecimento prévio em tecnologias frontend como HTML, CSS ou JavaScript.
A grande inovação do Flet reside em sua arquitetura: ele utiliza o Flutter, o framework de UI do Google, como seu motor de renderização. Isso significa que as aplicações Flet herdam a beleza, a performance e a experiência de usuário nativa do Flutter, mas são escritas e controladas inteiramente com a simplicidade e o poder do Python.
Por Que Usar o Flet?
Para desenvolvedores Python, o Flet oferece uma ponte direta para o desenvolvimento multiplataforma, com vantagens significativas:
Vantagem Descrição
Python Puro: Toda a lógica de frontend e backend é escrita em Python, aproveitando o vasto ecossistema de bibliotecas da linguagem.
Multiplataforma: Com um único código-fonte, é possível gerar aplicações para Web, Windows, macOS, Linux, Android e iOS.
Design Moderno: Utiliza os widgets do Flutter, garantindo um visual moderno e uma experiência de usuário de alta qualidade.
Tempo Real: Facilita a criação de aplicações em tempo real com comunicação bidirecional entre o cliente e o servidor.
Baixa Curva de Aprendizado: Desenvolvedores Python podem começar a criar UIs complexas rapidamente, sem a necessidade de aprender novas linguagens frontend.
Arquitetura: Python Encontra Flutter
A mágica do Flet acontece nos bastidores. O Flet atua como um "tradutor" entre o código Python e o motor de renderização do Flutter.
- Código Python: O desenvolvedor escreve o código da UI usando a API Python do Flet, que define a estrutura e o comportamento dos componentes (chamados de "controles").
- Flet Server: Um servidor Flet (escrito em Python) executa o código e mantém o estado da aplicação.
- Protocolo Flet: O servidor se comunica com o cliente Flet (o runtime do Flutter) através de um protocolo leve e eficiente.
- Flet Client (Flutter): O cliente, que é uma aplicação Flutter, recebe as instruções do servidor e renderiza a UI nativa na tela do usuário (seja no navegador, desktop ou mobile).
Essa separação permite que o Python controle a UI de forma remota, mantendo a performance do Flutter na renderização.
Primeiros Passos com Flet
1. Instalação
O Flet é instalado como qualquer outra biblioteca Python via pip:
pip install flet
É recomendado usar um ambiente virtual (venv) para isolar as dependências do projeto.
2. O Clássico "Hello, World!"
'Um aplicativo Flet mínimo é incrivelmente simples. Ele consiste em uma função principal que recebe um objeto page e adiciona controles a ele.
import flet as ft
def main(page: ft.Page):
# Configurações básicas da página
page.title = "Meu Primeiro App Flet"
page.vertical_alignment = ft.MainAxisAlignment.CENTER
# Adiciona um controle de texto à página
page.add(
ft.Text("Olá, Mundo com Flet!", size=30, weight=ft.FontWeight.BOLD)
)
# Inicia a aplicação
ft.app(target=main)
Para executar, salve o código como app.py e rode no terminal:
python app.py
O Flet abrirá automaticamente uma janela de desktop ou uma aba no navegador, dependendo do ambiente.
Exemplo Prático: Um Contador Simples

Para demonstrar a interatividade e o gerenciamento de estado, vamos criar um aplicativo de contador com um botão para incrementar e um campo de texto para exibir o valor.
import flet as ft
def main(page: ft.Page):
page.title = "Contador Flet"
page.vertical_alignment = ft.MainAxisAlignment.CENTER
# Variável para armazenar o estado do contador
counter = 0
# Controle de texto que exibirá o valor
txt_number = ft.TextField(value="0", text_align=ft.TextAlign.RIGHT, width=100)
# Função que será chamada ao clicar no botão
def button_click(e):
nonlocal counter
counter += 1
txt_number.value = str(counter)
# Atualiza a UI para refletir a mudança
page.update()
# Cria o botão e o associa à função de clique
btn_increment = ft.IconButton(ft.icons.ADD, on_click=button_click)
# Adiciona os controles à página em uma linha
page.add(
ft.Row(
[
ft.Text("Contador:", size=20),
txt_number,
btn_increment,
],
alignment=ft.MainAxisAlignment.CENTER,
)
)
ft.app(target=main)
Neste exemplo, a chave é a função page.update(). Sempre que o estado da aplicação (a variável counter) muda e você deseja que a interface reflita essa mudança, você deve chamar page.update().
Conclusão
O Flet representa um avanço significativo para a comunidade Python, democratizando o desenvolvimento de aplicações multiplataforma com UIs modernas e de alto desempenho. Ao alavancar o poder do Flutter e manter a sintaxe simples e familiar do Python, Hebert Aragão e outros desenvolvedores podem agora criar soluções robustas e visualmente atraentes para qualquer plataforma, de forma rápida e eficiente. Se você é um desenvolvedor Python buscando expandir seu horizonte para o desenvolvimento de UI, o Flet é, sem dúvida, o framework a ser explorado.



