drawer_rail
Componente Flutter reutilizável (open-source): navigation drawer/rail recolhível e temável, com busca, seções, badges, grupos expansíveis e flyouts.

// Visão geral
Um menu lateral de navegação para Flutter com dois estados: um painel expandido, com busca, seções, badges e grupos que se abrem no lugar, e um trilho estreito de ícones, onde os grupos viram menus flutuantes.
// O desafio
O NavigationDrawer e o NavigationRail do Material são dois widgets diferentes — alternar entre eles fica a cargo de cada app —, e nenhum dos dois traz busca, grupos aninhados ou abertura por hover no desktop. Cada app acaba reescrevendo o próprio menu lateral.
// Decisões de engenharia
Zero dependências
- Escolha
- o estado mora num ChangeNotifier simples, sem pacote de gerenciamento de estado.
- Por quê
- o componente entra em qualquer app sem trazer dependência junto.
- Trade-off
- não há integração pronta com Riverpod ou BLoC — quem usa liga o estado.
// A solução
Um único widget declarativo (DrawerSection, DrawerLink, DrawerGroup) com o estado num ChangeNotifier simples, sem depender de pacote de gerenciamento de estado. Busca que ignora acentos ("acao" encontra "Ação") e acha grupos pelo nome, abertura por hover no web/desktop sem sobrescrever o estado salvo, cursores corretos, tema derivado do ColorScheme com fallbacks, toda duração e curva expostas, e o "reduzir movimento" do sistema respeitado automaticamente.
Meu papel
Autor e mantenedor — API, implementação, 52 testes de widget, app de exemplo, CI e pipeline de release, publicado no pub.dev sob o publisher verificado devfrs.com.
Tecnologias
// Telas

// Resultado e evidências
Versão 0.5 no pub.dev com nota máxima (160/160), pronto para WASM, e em uso nos meus próprios apps.
- testes de widget
- 52