molecules library
Molecules do Flocks (componentes compostos de atoms). Só sobre a camada
widgets (sem Material/Cupertino).
Classes
- AppActionItem
- Item de ação para listas de opções/menus: ícone à esquerda + texto.
- AppAlert
- Card de alerta com título, descrição e ícone semântico.
- AppAreaChart
- Gráfico de área: uma linha por série com o espaço abaixo preenchido.
- AppAssistantStatus
- Rótulo de status do assistente ("Entendendo o pedido" → "Buscando dados" → "Organizando a resposta"), com efeito de máquina de escrever: o texto novo aparece sendo digitado, caractere a caractere, e o anterior some sendo apagado (backspace) antes.
- AppBarChart
- Gráfico de barras, vertical ou horizontal, agrupado ou empilhado.
- AppBarChartSelection
- AppBarChartSeries
- AppBreadcrumb
- Trilha de navegação (breadcrumb) do design system.
- AppBreadcrumbItem
- Item de um AppBreadcrumb: um rótulo, clicável quando onTap != null.
- AppBubbleChart
- Gráfico de bolhas: cada nó é um círculo cuja ÁREA representa o valor.
- AppBubbleChartNode
- AppBubbleChartSelection
- AppButton
-
Botão do Flocks — a ação com rótulo e/ou ícone, variando pelo eixo global
AppStyle:
filled(primária preenchida),outlined(secundária contornada) eelevated(preenchida com sombra simétrica, sem borda). - Rodapé de ações: um botão primary e um secondary opcional, em linha (default) ou coluna.
- AppCard
- Card genérico e estruturado do flocks.
- AppCartesianChartPoint
- AppCartesianChartSelection
- AppCartesianChartSeries
- AppChartLegendItem
- AppChartShell
- Moldura padrão de um gráfico: título, subtítulo, resumo, legenda e os estados de carregando/vazio em volta da área de plotagem.
- AppChartTooltipData
- AppChartTooltipItem
- AppChatAction
- Uma ação-ícone de uma AppChatActionBar (copiar, regenerar, gostei…).
- AppChatActionBar
- Barra de ações de uma mensagem — a linha de ícones abaixo da resposta do assistente (copiar, regenerar, gostei/não gostei).
- AppChatAttachmentCard
-
Card quadrado de anexo — a alternativa "cartão" ao
AppChatAttachmentChip(mesma informação, formato maior, estilo dos anexos do Claude). - AppChatAttachmentChip
- Chip de anexo do composer — thumbnail de imagem ou pílula ícone+nome com remover.
- AppChatBubble
- Bolha de mensagem do Flocks — o átomo visual de qualquer conversa (LLM ou estilo WhatsApp).
- AppChatComposer
- Campo de entrada multimodal de um chat — o composer.
- AppChatDayDivider
- Divisor de dia de uma conversa — a pílula central "Hoje" / "Ontem" / data, assinatura do WhatsApp, que separa mensagens por dia.
-
Rodapé de chat: envolve o AppChatComposer adicionando a safe-area
inferior (que o composer não trata) e o eixo de estilo de barra
AppStyle (incl.
glass). Docked (full-bleed) por padrão; floating destaca num painel arredondado. - AppChatMessageList
- Lista rolável de mensagens — o "chão" da conversa.
- AppColorPickerInput
- Campo de seleção de cor (sem Material nem dependências externas).
- AppColorPickerPanel
- Painel visual de seleção de cor (HSV) — sem Material nem dependências.
- AppCopyButton
- Botão de copiar: escreve value na área de transferência e confirma no próprio botão.
- AppDateMaskFormatter
-
Máscara de data no formato
DD/MM/YYYY(só dígitos; barras inseridas automaticamente). Usada pelo AppDatePickerInput. - AppDatePicker
- Date picker com navegação por mês, seleção de ano/mês e hover.
- AppDatePickerInput
- Campo de texto com date picker integrado.
- AppDateRange
- Intervalo de datas selecionado por AppDateRangePicker.
- AppDateRangePicker
- Date picker de intervalo: toque no início, depois no fim.
- AppDateTimeMaskFormatter
-
Máscara de data e hora
DD/MM/YYYY HH:mm. Usada pelo AppDateTimePickerInput. - AppDateTimePickerInput
- Campo de texto com date picker e time picker integrados.
- AppDonutChart
- Gráfico de rosca (donut) — como o pizza, mas com furo central.
-
AppDropdown<
T> - Dropdown de seleção única (sem Material).
-
AppDropdownOption<
T> - Opção genérica de um dropdown (AppDropdown, AppMultiSelect e variantes com busca).
- AppExpansionTile
- Tile expansível (cabeçalho clicável + corpo animado), sem Material.
- AppFilterChip
- Chip de filtro aplicado, com afordância de REMOVER.
- AppFloatingButton
-
FAB (floating action button) do Flocks — uma ação flutuante que sempre
carrega sombra (ela paira sobre o conteúdo), mesmo quando o AppStyle não é
elevated. Aceita icon e/ou label: só-ícone (círculo), só-texto ou ícone+texto (estendido, formato stadium). - AppGaugeChart
- Gráfico de medidor (gauge): arco segmentado com rótulo central.
- AppGaugeChartSegment
- AppGaugeChartSelection
- AppHoverHighlight
- Realce de hover puramente visual, sem gesto nem foco próprios.
- AppInput
- Campo de texto do design system, sobre um EditableText cru (sem Material/Cupertino).
- AppInteraction
-
Envolve qualquer widget com o comportamento de interação padrão do
Flocks — como o
InkWelldo Material, mas sobre a camadawidgetse dirigido por tokens. - AppLineChart
- Gráfico de linha: uma polilinha por série sobre eixos cartesianos.
- AppListEmpty
- Estado vazio de uma lista: ilustração centralizada, mensagem e uma ação opcional de limpar filtro.
- AppListTile
-
Linha de lista do design system, em dois estilos (AppListTileStyle) e com
variações ortogonais via construtores nomeados: navegação (chevron),
checkbox, switch (
toggle) e badge — todas comleadingesubtitleopcionais ereorderIndex(draggable). Agrupe várias com AppListTileGroup. - AppListTileAction
-
Item de lista com título, valor e um
trailingde ação (ex.: swapArrow). - AppListTileCheckbox
- Item de lista com checkbox à direita para seleção.
- AppListTileDraggableCheckbox
- Tile com handle de arraste + checkbox para listas reordenáveis.
- AppListTileGroup
-
Agrupa children (AppListTile/AppListTileRadio) num único card:
fundo/borda conforme style, cantos arredondados (radius global) e
divisórias (
outline) entre as linhas. -
AppListTileRadio<
T> -
Linha de lista com um radio (seleção única em grupo). Tocar a linha
seleciona o value. Genérico
AppListTileRadio<T>— classe própria porque um construtor nomeado não pode introduzir<T>(comoRadioListTile<T>). - AppMenu
- Menu de ações ancorado a um trigger (popup / context menu).
- AppMenuController
- Controla um AppMenu de forma programática.
- AppMenuDivider
- Uma divisória entre entradas do menu.
- AppMenuEntry
- Uma entrada de um AppMenu: item, seção ou divisória.
- AppMenuItem
- Uma ação clicável do menu.
- AppMenuSection
- Um grupo de AppMenuItems com um title opcional.
- AppMessageMeta
- Meta de uma mensagem — horário + (opcional) status de entrega, no rodapé de uma AppChatBubble.
-
AppMultiSelect<
T> - Dropdown de seleção múltipla (sem Material).
-
Barra de navegação inferior flutuante (como o bottom sheet): margens
destacadas, cantos arredondados, participando do eixo de estilo AppStyle
(incl.
glass). Um indicador deslizante (pílula) anima por trás do item ativo (mecânica doAppSegmentedButton), e um FAB isolado opcional pode aparecer ao lado (start/end), separado da barra. - Dados de um item do AppNavigationFooter.
- AppNumberStepper
-
Controle numérico − valor + (com
min/max/step). - AppOverlayAlert
- Card elevado de alerta com título, descrição e ícone semântico.
- AppOverlayCard
- Card flutuante com child livre, que intercepta o ponteiro (bloqueia cliques de vazarem para uma platform view embaixo, ex.: um mapa no web).
- AppPagination
- Navegação de páginas standalone (desacoplada de tabela).
- AppPaginationPerPage
- Seletor de "itens por página" de um AppPagination.
- AppPickerAnchor
-
Âncora genérica de "picker": um trigger (qualquer widget) que abre um
panel flutuante ancorado logo abaixo, num AppCard elevado, fechando ao
clicar fora /
Esc. - AppPickerHandle
- Controles do overlay entregues aos builders de AppPickerAnchor.trigger e AppPickerAnchor.panel.
- AppPickerWidth
- Estratégia de largura do painel de um AppPickerAnchor.
- AppPieChart
- Gráfico de pizza — distribuição de segments em fatias.
- AppPieChartSegment
- AppPieChartSelection
- AppPopover
- Popover: overlay de conteúdo rico ancorado a um trigger.
- AppPopoverController
- Controla um AppPopover de forma programática (abrir/fechar de fora).
- AppPrimaryHeader
-
Cabeçalho primário de página: um child centralizado com slots opcionais de
leading e trailing, participando do eixo de estilo AppStyle
(
filled/outlined/elevated) com semântica de barra (borda/sombra só na aresta de baixo). Participa também do eixo glass (glass ou o global): glass = blur + gradiente estilo Notes. - AppQuestionCard
- Card de pergunta dentro do fluxo do chat — a IA pede algo ao usuário e recebe a resposta inline. Vem em três tipos (construtores nomeados):
- AppRating
- Avaliação por estrelas (display e input), com meio-passo opcional.
-
AppSearchableDropdown<
T> - Dropdown de seleção única com busca: um campo de filtro no topo do overlay restringe as opções por texto. Reusa o core de dropdown.
-
AppSearchableMultiSelect<
T> - Dropdown de seleção múltipla com busca: chips no trigger + filtro no overlay; selecionar não fecha. Reusa o core de dropdown.
-
Rodapé de busca flutuante estilo iOS Notes: uma cápsula com um campo de
busca sobre o eixo de estilo AppStyle (incl.
glass), com a safe-area inferior e um trailing isolado opcional (ex.: um FAB de compor). -
AppSegment<
T> - Um segmento de um AppSegmentedButton: um valor com rótulo e/ou ícone.
-
AppSegmentedButton<
T> - Botão segmentado de seleção única (radio-like numa pílula).
-
Rodapé simples: uma faixa com child sobre o eixo de estilo AppStyle
(
filled/outlined/elevated), com semântica de barra (borda/sombra na aresta de cima) e a safe-area inferior embutida. Participa também do eixo glass (glass ou o global): glass = blur + gradiente Notes. - AppSimpleHeader
-
Cabeçalho simples de página: uma faixa com child sobre o eixo de estilo
AppStyle (
filled/outlined/elevated), com semântica de barra (borda/sombra na aresta de baixo) e a safe-area do topo embutida. Participa também do eixo glass (glass ou o global): glass = blur + gradiente Notes, sobrepondo o conteúdo via AppScaffold. Altura fixa; cor 100% do tema; marcado como cabeçalho. - AppSnackbar
- Card de feedback temporário (sucesso, erro, info) com título, descrição e ícone semântico.
- AppSplitButton
- Botão de ação dividida: uma ação primária + um caret que abre um AppMenu de ações secundárias.
- AppSuggestionChip
-
Chip de sugestão — um prompt inicial (chat com LLM) ou resposta rápida
(WhatsApp) tocável, para entrar num
Wrap. - AppTileInfo
- Par rótulo/valor (título à esquerda, valor abaixo) — não clicável.
- AppTimeMaskFormatter
-
Máscara de horário
HH:mm(ouHH:mm:ssquando showSeconds). Usada pelo AppTimePickerInput. - AppTimePicker
- Time picker com scroll finito (rodas) para seleção de hora.
- AppTimePickerInput
- Campo de texto com time picker integrado.
- AppTooltip
- Tooltip customizado do design system (sem dependência do Material).
- AppTypingIndicator
- Indicador "digitando…" — três pontinhos que sobem e descem em sequência.
- ListTileGroupScope
- Escopo que informa aos AppListTile filhos que estão dentro de um AppListTileGroup — o grupo desenha o container e as divisórias, então os tiles renderizam só a linha. Não é API pública.
Enums
- AppAlertColor
- Papel de cor semântica de um AppAlert.
- AppAttachmentKind
-
Categoria de um anexo — deriva da extensão do arquivo e escolhe o ícone e o
tom de cor. Usada por
AppChatAttachmentChip/AppChatAttachmentCardquando não há thumbnail (ou quando o consumidor não passa um ícone). - AppBarChartLayout
- AppBarChartOrientation
- AppButtonColor
-
Papel de cor de um botão do Flocks. Cada papel resolve para um swatch do
tema (
role) e o seu par on-color (onRole) — sempre do tema, nuncaAppColors.*. - Alinhamento dos botões num AppButtonsFooter.
- Estilo de contexto de um AppButtonsFooter — define o arredondamento.
- AppButtonSize
- Tamanho de um botão do Flocks (altura + métricas do loading).
- AppButtonsPlatformStyle
- Estilo de plataforma de um AppButtonsFooter — define a superfície de fundo.
- AppChatAttachmentLayout
- Como a faixa de anexos do AppChatComposer é disposta.
- AppChatAuthor
- Autor de uma mensagem de chat — dirige o alinhamento e o tint padrão da bolha.
- AppChatBubbleColor
- Papel de cor do tint da bolha do próprio autor (AppChatAuthor.me).
- AppChatBubbleTail
- Canto reto ("orelhinha"/tail) da bolha, no lado do autor.
- AppGaugeChartVariant
- AppLineChartCurveStyle
- AppListTileStyle
- Estilo de container de um list-tile / grupo de list-tiles.
- AppMessageStatus
- Estado de entrega de uma mensagem enviada — o "tick" do WhatsApp.
- AppMotionPreset
- Micro-animação pré-setada aplicada por AppInteraction em hover/press.
-
Lado do FAB isolado ao lado da barra flutuante do
AppNavigationFooter(respeita RTL via start/end). - AppOverlayAnimation
- Animação de entrada/saída de um overlay.
- AppOverlayPlacement
- Onde o painel flutuante ancora em relação ao trigger.
- AppOverlayPosition
- Posição de um overlay na tela — a grade 3×3 sem o centro: 4 cantos + 4 centros de aresta (8 pontos).
- AppPopoverTrigger
- Como o AppPopover é acionado.
- AppQuestionCardRole
- Papel semântico de um AppQuestionCard — tinge a casca e o botão de ação.
- AppSheetCloseSide
- Lado da barra de topo onde o botão de fechar de uma superfície flutuante (dialog, bottom sheet, side sheet) aparece.
- AppSnackbarType
- Tipo semântico de um AppSnackbar (cor + ícone).
- AppTooltipPosition
- Posição do tooltip em relação ao AppTooltip.child.
- AppTooltipSize
- Tamanho do tooltip: controla o TAMANHO DA FONTE do balão. O padding é constante (médio) nos três.
Constants
- kAppCopiedFeedback → const Duration
- Quanto tempo o AppCopyButton fica no estado "copiado" antes de voltar.
- kAppHeaderChildInset → const double
-
Inset inicial do child quando alinhado à esquerda sem leading (
_row). - kAppHeaderContentHeight → const double
- Altura FIXA do conteúdo do header (não cresce com os filhos). A faixa da status bar é somada por cima disso.
- kAppHeaderSlotReserve → const double
- Reserva horizontal simétrica dos slots leading/trailing — mantém o título centralizado mesmo com só um dos lados. Casa com o alvo de toque das ações.
- Altura máxima do conteúdo (a safe-area inferior é somada por baixo).
- kAppSimpleHeaderContentHeight → const double
-
Altura FIXA do conteúdo (a faixa da status bar é somada por cima). Passe
constraints.maxHeightpara uma faixa mais alta.
Functions
-
appAttachmentIcon(
String? name, {AppAttachmentKind? kind}) → String - Ícone específico por extensão de um anexo (mais fino que AppAttachmentKind.icon): distingue csv, xls, doc, txt, ppt e zip. Cai no ícone da categoria para o resto.
-
appFilledButtonColors(
AppColorTheme theme, ColorSwatch< int> role, ColorSwatch<int> onRole, {required bool hovered, required bool pressed, required bool disabled}) → ButtonColors - Cores de um botão preenchido (fill) por estado.
-
appGhostButtonColors(
AppColorTheme theme, ColorSwatch< int> role, {required bool bordered, required bool hovered, required bool pressed, required bool disabled}) → ButtonColors - Cores de um botão fantasma (line/text/icon) por estado.
-
appRoleAccent(
AppColorTheme theme, ColorSwatch< int> role) → Color - Acento de um papel de cor: o stop do swatch legível sobre a superfície.
-
paginationRange(
{required int currentPage, required int pageCount, int siblingCount = 1, int boundaryCount = 1}) → List< int?> -
Sequência de páginas a exibir, com reticências (
null) nas lacunas. -
showAppOverlay(
{required BuildContext context, required Widget child, AppOverlayPosition position = AppOverlayPosition.topRight, AppOverlayAnimation animation = AppOverlayAnimation.slide, double? maxWidth, Duration? duration = const Duration(seconds: 4), double margin = 24, VoidCallback? onDismiss}) → VoidCallback -
Exibe
childnum ponto da tela (position) via Overlay, com animação de entrada/saída (animation) e largura máxima (maxWidth) opcionais. Sem Material; respeita reduce-motion (via AppMotion). -
showAppSnackbar(
{required BuildContext context, required String description, required String title, required AppSnackbarType type, Duration duration = const Duration(seconds: 3), VoidCallback? onDismiss}) → void - Exibe um AppSnackbar no canto inferior direito, com auto-dismiss.
Typedefs
- AppChartValueFormatter = String Function(double value)
- ButtonColors = ({Color background, Color border, Color foreground})
-
Cores resolvidas de um botão por estado:
background,foreground,border.