Flet Multi-Step Wizard — Modern UI Template

Flet Multi-Step Wizard — Modern UI Template

Template moderno de wizard multi-step em Python com Flet, pensado para quem quer sair do “funciona” e chegar no “isso aqui parece produto”.

Não é sobre criar um formulário em etapas.
É sobre fazer isso com estado previsível, transições reais e UI que não parece improviso.

O que você vai perceber de cara

  • A navegação entre etapas é fluida
  • O estado não “some” quando você troca de tela
  • A interface responde como um app de verdade, não como um script Python com botões

O problema real que isso resolve

Construir um wizard parece simples… até não ser.

Você começa com:

  • um campo de nome
  • um botão “próximo”
  • um contador de etapa

E quando percebe:

  • o valor digitado some ao trocar de step
  • a sidebar não atualiza quando deveria
  • a animação simplesmente não acontece
  • você começa a espalhar atualização manual tentando “forçar” a UI

Nada quebra completamente… mas tudo fica instável.

Esse projeto nasce exatamente desse ponto.


Como isso foi resolvido

Estado que realmente reage

O estado da aplicação não fica perdido em variáveis soltas.

Ele vira um centro de controle único, que qualquer parte da interface pode observar.

Resultado prático:

  • você altera um valor → a interface reflete automaticamente
  • a sidebar acompanha o progresso sem intervenção manual
  • o fluxo deixa de ser imperativo e vira previsível

Estado local vs estado global

Dentro de um campo de input, existe um detalhe que muita gente ignora:

  • o valor precisa atualizar na hora
  • mas também precisa existir fora daquele componente

Esse projeto usa os dois ao mesmo tempo.

E é exatamente isso que impede:

  • campo travando
  • valor sumindo ao navegar
  • inconsistência entre tela e dados

Transição que realmente funciona

Trocar conteúdo não significa que a UI entende que precisa animar.

Sem isso, o comportamento é seco:

  • um step some
  • outro aparece

Aqui, cada etapa é tratada como uma entidade própria.
E isso faz com que a transição exista de verdade.


Async sem travar a interface

O botão final simula uma ação real:

  • loading aparece
  • interface continua responsiva
  • depois o fluxo segue

Nada de travamento.


UI não é detalhe aqui

Esse projeto não tenta ser minimalista.
Ele tenta parecer real.

  • sidebar com progresso animado
  • indicadores visuais de etapa
  • seleção de tema com preview
  • feedback imediato em cada ação

O Step3 não está ali para ensinar.

Ele está ali para responder:

“isso aqui daria pra virar um produto?”

Por que isso importa

Se você já tentou montar interface com Flet, provavelmente esbarrou em algum desses pontos:

  • quando atualizar a UI
  • onde guardar estado
  • por que algo não re-renderiza
  • por que a animação não dispara

Esse projeto não tenta cobrir tudo.

Mas resolve o suficiente para você parar de brigar com o básico
e começar a construir coisa séria.


🔗 Código


*Adapte como queira.

O importante é não voltar para o caos depois de entender esse fluxo.