Pular para o conteúdo
Voltar

drawer_rail

Open sourcePapel: Autor e mantenedorFlutterDartPackage

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

Pacote open-source160/160 pub points3 likes766 downloads em 30 dias
drawer_rail

// 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

FlutterDartpub.devGitHub Actions

// Telas

drawer_rail recolhendo para o trilho de ícones, abrindo flyouts, buscando e trocando para o modo escuro

// 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

Gostou deste tipo de trabalho?