theme library

Tema do Flocks (AppTheme, AppThemeData, AppThemeScope).

Classes

AppAnimationTheme
Global de micro-interações do Flocks (espelha AppRadiusTheme).
AppColorTheme
AppGlassTheme
Eixo de glass ("liquid glass") do Flocks — um tratamento aditivo, ortogonal ao AppStyleTheme, aplicado só à allow-list de superfícies flutuantes (overlays, barras, FAB, Menu/Popover). Espelha AppTransparencyTheme, mas o default é desligado (opt-in por marca), enquanto a transparência é um gate de acessibilidade (default ligado).
AppIconTheme
O eixo de ícone: quem desenha o ícone que os componentes pedem.
AppIllustrationTheme
O eixo de ilustração: quem desenha a ilustração que os componentes pedem.
AppOverlayScope
Reprovê, no conteúdo de um OverlayEntry, os providers que o Overlay do root deixa para trás (ele vive ACIMA do tema/text-scale/DefaultTextStyle do app):
AppRadiusTheme
Eixo global de forma dos cantos do tema.
AppStyleTheme
Global de estilo de container do Flocks (espelha AppRadiusTheme e AppAnimationTheme).
AppTextTheme
A class that contains the text theme for the App.
AppTheme
A class that contains the themes for the App.
AppThemeData
AppThemeScope
Fornece o AppTheme resolvido para a árvore, reagindo ao mode escolhido pelo usuário e ao brilho do sistema operacional (quando AppThemeMode.system).
AppTransparency
Ponto único de decisão de "reduzir transparência" do Flocks (espelha AppMotion).
AppTransparencyTheme
Gate de acessibilidade de transparência do Flocks (espelha AppAnimationTheme).
ContrastRule
Uma regra do contrato: um par de cores do tema com um alvo por tier.
ContrastTarget
Alvos de contraste (razão WCAG + ΔT de tom) para um ContrastTier num brilho.
StructuralRule
Regra estrutural do tema: uma checagem sobre uma cor (não um par fg/bg), como "a superfície escura não é preto puro". Vive na mesma fonte única que flocksContrastContract e é iterada pelos mesmos consumidores (testes + relatório), eliminando o if (brightness == dark) duplicado.

Enums

AppBrightness
AppThemeMode
Modo de tema escolhido pelo usuário.
ContrastTier
Categoria de uma ContrastRule — define os alvos de razão e ΔT.

Extensions

AppRadiusThemeResolve on AppRadiusTheme
Açúcar de appResolveRadius sobre o eixo global (AppRadiusTheme).

Constants

flocksContrastContract → const List<ContrastRule>
Todas as regras de contraste que toda marca × brilho deve satisfazer.
flocksStructuralContract → const List<StructuralRule>
Regras estruturais (single-color) que toda marca × brilho deve satisfazer.
kRedondoCap → const double
Teto (px) do arredondamento AppRadiusMode.redondo — evita que caixas grandes/content-sized fiquem exageradamente redondas. É o raio "padrão" no qual botões, cards, superfícies e demais containers pousam. Tunável.
kRedondoFraction → const double
Fração do lado menor usada pelo modo AppRadiusMode.redondo. 0.25 = 25%. Mantém o arredondamento proporcional entre componentes de tamanhos diferentes (um controle pequeno e um grande guardam a mesma "cara").
kSurfaceCircularRadius → const double
Raio das superfícies grandes no modo AppRadiusMode.circular. Ver kSurfaceRedondoRadius.
kSurfaceRedondoRadius → const double
Raios dedicados das superfícies grandes (bottom sheet, side sheet, dialog). Como no tile, o circular NÃO satura em oval: pousa num raio bem pronunciado. redondo/padrao usam um raio próprio, maior que o do tile (superfície maior comporta cantos maiores). Tunáveis.
kTileCircularRadius → const double
Raio do tile no modo AppRadiusMode.circular. Ver kTileRedondoRadius.
kTileRedondoRadius → const double
Raios dedicados dos containers de list-tiles (linha avulsa, card de grupo e envelope do expansion). O circular puro satura em metade do lado menor e vira um oval gigante cujos cantos cortam o conteúdo (avatar, ícone leading, chevron, texto); aqui ele pousa num raio pronunciado mas seguro. redondo/ padrao usam um raio próprio do tile (maior que o kRedondoCap global de 12, mas discreto). Escala menor que as superfícies grandes. Tunáveis.

Functions

appResolveGlassOn(BuildContext context, bool? glass) bool
Ponto único de resolução do eixo glass (espelha AppTransparency, que é o gate de acessibilidade).
appResolveRadius({required AppRadiusMode mode, required AppRadiusMode componentDefault, Size? size}) BorderRadius
Resolve o BorderRadius de um componente a partir do eixo de forma (AppRadiusMode) — função pura, testável sem render (padrão dos resolvers do DS, ex.: resolveStyleDecoration).
contrastTargetFor(ContrastTier tier, AppBrightness brightness) ContrastTarget
Resolve os alvos de tier para um brightness (só a separação varia por brilho — a regra de amplificação no escuro).
darkSurfaceInBand(AppColorTheme theme) bool
Regra estrutural do tema escuro: a superfície base não pode ser preto puro — seu tom HCT deve ficar em [kDarkSurfaceToneMin, kDarkSurfaceToneMax].
resolveStyleDecoration({required AppStyle style, required bool isDark, required Color outline, required Color surfaceContainer, Color? ownFill, Color? background, double borderWidth = AppStrokes.m}) StyleDecoration
Resolve o tratamento de container (AppStyle) de um componente — função pura (padrão dos resolvers de cor do DS, ex.: appFilledButtonColors), testável sem render.
styleBoxDecoration({required AppStyle style, required bool isDark, required BorderRadius radius, required Color outline, required Color surfaceContainer, Color? ownFill, Color? background, double borderWidth = AppStrokes.m}) BoxDecoration
Atalho de resolveStyleDecoration que já devolve um BoxDecoration com o radius do componente aplicado.

Typedefs

ColorSelector = Color Function(AppColorTheme theme)
Seleciona uma cor a partir do AppColorTheme resolvido.
StyleDecoration = ({BoxBorder? border, List<BoxShadow>? boxShadow, Color? color})
Resultado de resolveStyleDecoration: os três aspectos de container que o eixo AppStyle controla. O componente monta o BoxDecoration final juntando o seu próprio borderRadius (ver styleBoxDecoration para o atalho).