app library

API de mais alto nível do Flenx: um main.server.dart declarativo.

Cada rota é definida UMA vez (FlenxRoute = SEO + componente juntos). O app só lista as rotas e chama FlenxApp.run(...). Pensado para iniciantes. Importe package:flenx/app.dart (lado servidor).

Classes

AdPlacement
Uma regra de anúncio: qual unidade (slot) e ONDE ela aparece (por caminho e/ou por categoria). Listas vazias = sem restrição naquele eixo.
AdsConfig
Configuração central de anúncios. clientId é o ca-pub-... do Google AdSense. Defina uma vez e passe ao FlenxApp.run(ads: ...) — o loader vai no <head>. Onde mostrar é controlado pelas placements (por página/categoria).
AdSlot
Renderiza um anúncio: uma unidade do AdSense (ins.adsbygoogle + push) ou um HTML custom. Precisa do loader do AdSense no <head> (o FlenxApp.run(ads: ...) injeta automaticamente).
ApiAction
Ação declarativa executada por um endpoint. O runtime Dart e o gerador PHP sabem executar cada uma. Ações de listagem são sempre paginadas.
ApiConfig
Configuração base aplicada a todas as chamadas (middlewares padrão): CORS, limites de paginação. Pensada para o usuário não precisar configurar.
ApiEndpoint
Definição declarativa de um endpoint de API. A mesma definição vira um handler Dart (runtime) ou um arquivo PHP (gerado).
ApiResponse
Envelope de retorno padrão de toda chamada de API do Flenx. Mesma forma em sucesso e erro, com meta de paginação quando aplicável.
AppBinding
Main class that provide services (also known as "bindings").
AsaasGateway
Gateway do Asaas (link de pagamento — Pix/cartão/boleto).
AsyncSnapshot<T>
Immutable representation of the most recent interaction with an asynchronous computation.
BingUet
Microsoft Advertising (Bing UET). Bom para decisores B2B (Edge/Outlook).
Blog
Facade do blog — ponto único de uso. Carrega os .md, monta a taxonomia, expõe a fonte de rotas para o SEO e resolve qualquer caminho /blog* no componente a ser renderizado. Cria um post = soltar um arquivo markdown.
BlogPost
Um post de blog carregado de um arquivo markdown (frontmatter + corpo).
BlogPostMapper
Converte BlogPost de/para uma linha de banco (Map). É o equivalente do frontmatter para a fonte de banco: define como o post é persistido nas colunas e como volta a virar objeto. Robusto a valores em texto (o runtime da API serializa tudo como String).
BlogRepository
Carrega posts de blog de uma pasta de arquivos .md no filesystem.
BlogRouteSource
Converte o blog (posts + categorias + tags + índice) em RouteMetas, integrando o conteúdo markdown à camada SEO: cada item gera sozinho sua entrada no sitemap, no llms.txt e seu JSON-LD.
BlogScaffold
Cria posts de blog já com o frontmatter padrão. A geração do conteúdo (markdown) é pura (testável); create grava o arquivo.
BlogSource
Fonte de posts do blog. Abstrai DE ONDE os posts vêm — arquivos .md, banco de dados, API externa, etc. O Blog agrega uma ou mais fontes, então um mesmo site pode ter posts em Markdown e posts no banco.
Item de trilha de navegação, usado para gerar JSON-LD BreadcrumbList (rich result de breadcrumb no SERP). O último item costuma vir sem path.
BuildableElement
An Element that has a build method.
BuildContext
The BuildContext supplied to a Components build() method.
Builder
A stateless utility component whose build method uses its builder callback to create the component's child.
BuildOwner
CachingIterable<E>
A lazy caching version of Iterable.
Category
Categoria de blog — hierárquica como no WordPress (ex.: Tutoriais/Flutter). O segments guarda os nomes; slugPath os slugs correspondentes.
ChangeNotifier
A class that can be extended or mixed in that provides a change notification API using VoidCallback for notifications.
ChannelResult
Resultado do envio por um canal.
ClientAnnotation
Use with client to annotate a client component.
CommercialDoc
Um documento comercial exibido na Central (FlenxDocHub) e servido em /{base}/{slug} — proposta, cartão de visita, tabela de preços, etc.
Component
Describes the configuration for an Element.
CompositeBlogSource
Agrega várias BlogSource em uma só (Markdown + banco + ...). Carrega todas em paralelo, deduplica por slug (a PRIMEIRA fonte vence — defina a ordem de prioridade ao montar) e ordena do mais novo para o mais antigo.
CrawlerRule
Regra de um grupo User-agent no robots.txt.
CustomPixel
Provedor genérico: cole o snippet do fornecedor e pronto — cobre Taboola, Outbrain, Pinterest, TikTok, Hotjar, Clarity ou qualquer pixel futuro sem alterar a lib.
DatabaseBlogSource
Fonte de posts no banco de dados: lê de uma tabela (padrão blog_posts) via DbExecutor. Permite criar/editar posts pela API/admin sem tocar em arquivos. Funciona com qualquer executor (em memória, JSONL, MySQL).
DbColumn
Coluna de uma tabela. A "notação do banco" do model: tipo, nulo, único, chave primária e chave estrangeira (references, no formato 'tabela.coluna') para relacionar tabelas.
DbConfig
Configuração de conexão ao banco — lida do ambiente (.env), só no servidor. Nunca embuta credenciais no código nem no cliente.
DbExecutor
Abstração de acesso ao banco usada pelo runtime Dart. Implementações: InMemoryDbExecutor (testes/dev), JsonlDbExecutor (arquivo) e, em produção, um MySqlExecutor (mysql_client). O alvo PHP gera PDO equivalente.
DbModel
Definição declarativa de uma tabela: colunas (com notação de banco) e relações. É a fonte para gerar migration, queries e código Dart/PHP.
DbRegistry
Registro do backend de banco. Você escolhe por DB_PROVIDER (supabase, firebase, rest, jsonl...) e adiciona as credenciais — mesma ideia do pagamento. Provedores novos entram com DbRegistry.register('x', ...).
DbRelation
Relação entre dois models — usada para gerar joins/includes padronizados. Ex.: um pedido belongsTo cliente; um cliente hasMany pedidos.
DecoderAnnotation
Use with decoder to annotate an decoder function for a custom model.
DeleteById
Remove um registro por id.
DividerBlock
Divisor temático entre seções do post (linha horizontal).
Document
DomComponent
Represents a html element in the DOM
DomElement
DynamicRouteSource<T>
Esquema GENÉRICO para rotas dinâmicas (ex.: /blog/:slug, /produtos/:id) gerarem sitemap/llms automaticamente.
Element
An instantiation of a Component at a particular location in the tree.
ElementSlot
EmbedBlock
Conteúdo incorporado (vídeo do YouTube, tweet, iframe). O html é inserido como bloco — use para players e widgets que um post de portal costuma ter.
EncoderAnnotation
Use with encoder to annotate an encoder function for a custom model.
Factory<T>
A factory interface that also reports the type of the created objects.
FaqItem
Par pergunta/resposta usado para gerar JSON-LD FAQPage (forte em AEO/GEO: motores de resposta extraem perguntas estruturadas diretamente).
FcmPushChannel
Canal de push via Firebase Cloud Messaging (FCM). Ativo quando há FCM_SERVER_KEY no .env. Envia para o deviceToken da mensagem.
Feature
Um recurso exibido na grade de features da landing (ícone + título + texto).
FeaturesSection
Seção de recursos — grade de cards (ícone, título, descrição), montada com o kit Dart (sem HTML/CSS). Textos e features são personalizáveis.
Field
Campo de entrada de um endpoint, com validação declarativa. A mesma regra é aplicada no alvo Dart (runtime) e gerada no PHP.
FileLeadStore
Armazenamento simples em arquivo (content/leads.jsonl), uma linha por lead.
FindById
Busca um registro por id (parâmetro id).
FirebasePush
Push web via Firebase Cloud Messaging (FCM). config é o objeto JS de configuração do Firebase (ex.: "{apiKey:'..',projectId:'..',appId:'..'}"), vapidKey é a chave Web Push do projeto e tokenEndpoint (opcional) recebe o token via POST para o backend salvar. Requer o worker firebase-messaging-sw.js na raiz pública do site (com a mesma config). Sem consent mode → pede permissão e registra o token só após o aceite.
FirestoreDbExecutor
DbExecutor que persiste no Firebase Firestore (via REST). Mesma interface dos demais. Como o Firestore é NoSQL, há um pequeno mapeamento: cada documento vira um Map com a chave id (o id do documento) somada aos campos. insert devolve o id como int quando numérico (senão 0 — use o id retornado nas listagens).
FlenxAccordion
Lista acordeão — itens expansíveis com animação suave (CSS puro, sem JS).
FlenxAccordionItem
Um item do FlenxAccordion: título clicável + conteúdo expansível.
FlenxAds
Renderiza todos os anúncios configurados para um contexto. É só dropar onde quiser exibir: FlenxAds(ads, path: ctx.path) ou FlenxAds(ads, category: 'Tecnologia', position: AdPosition.top).
FlenxAlert
Caixa de alerta com ícone, título opcional e mensagem. Use para validações, avisos e confirmações — sem escrever HTML/CSS.
FlenxAnimated
Envolve qualquer componente com uma animação — scroll-reveal ou loop.
FlenxApi
Runtime do alvo Dart: transforma a lista declarativa de ApiEndpoint em rotas shelf, já com os middlewares padrão (JSON, CORS, validação, tratamento de erro) e o envelope/paginação padronizados.
FlenxApp
Ponto de entrada declarativo do site Flenx.
FlenxAudioPlayer
Player de áudio — reproduz arquivos locais ou streams (rádio online). Play/pause controlado por JS; sem bibliotecas externas.
FlenxAudioPlayerFloat
Player de áudio flutuante — barra fixa no bottom da tela, persiste durante o scroll. Ideal para rádio online ou trilha sonora do site.
FlenxBanner
Barra de anúncio no topo da página — promoções, avisos de manutenção, novidades. Exibe message e um action opcional. Sem HTML/CSS.
FlenxBenefit
Um benefício exibido na faixa acima do rodapé.
FlenxBenefitsBar
Faixa de benefícios (frete, parcelamento, troca...) acima do rodapé.
FlenxBlogLayout
Moldura pronta para as páginas de blog: header + rodapé + WhatsApp do site (SiteLayout) já com o CSS do blog injetado. Genérica e editável — passe a marca, os menus e o rodapé do seu site.
FlenxBrandItem
Um item da tira de marcas/departamentos.
FlenxBrandStrip
Tira de marcas/departamentos com botão "Confira".
FlenxBusinessCard
Cartão de visita imprimível (frente + verso), 85×55 mm — pronto para gráfica. Tudo em Dart: logo, nome, cargo, linhas de contato, tagline e cores.
FlenxButton
Botão/link — como um ElevatedButton/TextButton. Aponta para href. Tem hover predefinido (clareia + sobe levemente) ativado por padrão; é só um parâmetro Dart (hover) — você nunca escreve CSS. O componente injeta o :hover scoped por baixo (inline não faz :hover).
FlenxCard
Cartão — um contêiner com fundo, borda e cantos arredondados (como um Card/Container do Flutter). Estilo por parâmetros; nada de CSS.
FlenxChecklist
Lista densa de itens com marcador — para apresentar MUITOS recursos, diferenciais ou dores sem virar um grid de cards genérico. Marcador de "check" (positivo) ou "×" (negativo, ex.: seção "o desafio").
FlenxChecklistItem
Item de uma FlenxChecklist: título e (opcional) descrição curta.
FlenxCodeCard
Cartão de código (estilo "janela de editor") — você passa só o texto do código; o componente desenha a janela. Nada de HTML/CSS da sua parte.
FlenxColumn
Coluna (vertical) — como o Column do Flutter. gap é o espaço entre os filhos (px). Gera flexbox por baixo; você não escreve CSS.
FlenxCompare
Tabela comparativa "nós x eles" — quebra a objeção de preço/valor mostrando, de forma escaneável, o que muda entre a sua marca e a alternativa comum. Componente só-Dart (o CSS fica encapsulado aqui, sem HTML/CSS no site).
FlenxCompareRow
Linha de um FlenxCompare: o recurso e se cada lado o oferece.
FlenxConsent
Banner de consentimento (LGPD/cookies). Genérico e themeável: cores via tokens (--surface/--ink/--border/--primary), textos configuráveis. Fica escondido para quem já decidiu; ao aceitar/recusar chama flenx.grantConsent()/flenx.denyConsent() (do FlenxTracking).
FlenxCta
Chamada para ação (CTA): título, subtítulo e um botão, num cartão centrado.
FlenxDocBar
Barra fixa no topo de um documento: voltar à Central + imprimir. Não aparece na impressão. O botão dispara window.print().
FlenxDocCover
Capa de documento: imagem de fundo (cover) + gradiente + conteúdo alinhado na base. Na tela ocupa quase a altura toda; na impressão ocupa uma página A4 inteira e força a quebra de página em seguida (o resto começa na página 2).
FlenxDocHub
Central de Documentos Comerciais: lista os docs em cards, com filtro por tipo, e links para abrir/imprimir cada um. Servida em basePath.
FlenxDocPage
Página de um documento comercial: barra (voltar + imprimir) + invólucro de impressão conforme CommercialDoc.format + o conteúdo do documento.
FlenxEvent
Nomes de evento padrão (compatíveis com Meta Pixel e GA4) e helper para disparar flenx.track a partir de qualquer componente (onclick/onsubmit).
FlenxFaq
Seção de FAQ visível (AEO) — perguntas/respostas em <details> nativo, sem JS. Reusa o model FaqItem. Para o rich result FAQPage, passe os MESMOS itens em RouteMeta.faqs (o schema é emitido no <head> pela lib).
FlenxFeatureSpotlight
Seção "spotlight": um texto (eyebrow + título + descrição + bullets) ao lado de uma imagem/screenshot com moldura. Alterna o lado com imageLeft. Responsivo: em telas estreitas vira uma coluna (imagem embaixo).
FlenxFloatingButton
Botão de ação flutuante e fixo (canto da tela) — para WhatsApp ou qualquer chat/ação (Telegram, Messenger, chat próprio, telefone…). Só Dart.
FlenxFooter
Rodapé pronto: marca + frase + colunas de links + linha de copyright. Tudo por parâmetros (Dart); o componente desenha o HTML por baixo.
FlenxFooterColumn
Uma coluna de links do rodapé.
FlenxFormField
Campo de um FlenxLeadForm.
FlenxFullscreen
Contêiner que ocupa a tela inteira (100% × 100vh, sem margem) — usado para hospedar uma ilha Flutter em tela cheia (ex.: o painel admin).
FlenxGrid
Grade responsiva — coloca os filhos lado a lado e quebra a linha sozinha quando a tela estreita (cada item tem largura mínima minItemWidth). Substitui aqueles div(flex: ...) na mão: você só passa os componentes.
FlenxHeading
Título — como um Text de destaque. level 1–3 vira <h1>..<h3> (bom para SEO); o tamanho default segue o nível, mas pode ser sobrescrito com size.
FlenxHero
Hero pronto da landing: olho (eyebrow), título, subtítulo, botões (actions) e um conteúdo opcional à direita (aside, ex.: FlenxCodeCard). Tudo por parâmetros — você não escreve HTML/CSS.
FlenxHeroBanner
Banner principal (hero) da loja — eyebrow, título, subtítulo, preço de chamada e botão. Setas e indicadores são decorativos.
FlenxHeroCarousel
Hero em carrossel: vários slides com imagem de fundo que trocam automaticamente (fade), com indicadores. Cada slide tem eyebrow, título, subtítulo, preço de chamada e botão. Só Dart — o HTML/JS fica aqui na lib.
FlenxHeroCover
Hero de tela cheia com imagem de fundo (com zoom Ken Burns), logo opcional flutuando acima do título e conteúdo com animação de entrada. Só Dart — o CSS/keyframes vão embutidos no próprio componente.
FlenxHeroSlide
Um slide do hero/carrossel da loja.
FlenxHeroSplit
Hero em duas colunas: texto à esquerda, imagem à direita. No mobile a imagem se converte em fundo desfocado atrás do texto.
FlenxImage
Imagem — como o Image do Flutter. src é a URL/caminho. Estilo por parâmetros; nada de CSS.
FlenxInsets
Espaçamento (padding/margin) no estilo EdgeInsets do Flutter, mas puro-Dart — não depende de dart:ui (que não roda na geração estática).
FlenxLeadForm
Formulário de captura de leads configurável, só-Dart (o CSS/JS fica encapsulado aqui — nada de HTML no site). Envia por mailto compondo o corpo com todos os campos (sem back-end). Renderize dentro de um hero/section.
FlenxLottie
Animação Lottie — carrega um arquivo .json via lottie-web. O runtime JS é carregado do CDN automaticamente (uma vez por página).
FlenxMostRead
Bloco "Mais lidas" (estilo G1): lista numerada com números na cor primária.
FlenxNewsCard
Cartão de notícia (estilo G1): thumb 16:9, chapéu (editoria) e título.
FlenxNewsHeader
Cabeçalho de portal de notícias (estilo G1): barra branca fixa com logo (duas palavras) e, abaixo, a faixa de editorias com rolagem no mobile. A cor do logo e dos hovers vem de var(--primary) (defina no FlenxPage).
FlenxNewsHighlight
Manchete principal (estilo G1): imagem larga 16:9, chapéu da editoria, título grande responsivo, linha-fina e meta (autor · data).
FlenxNewsSectionTitle
Título de bloco/editoria (estilo G1): texto com barra à esquerda na cor primária (var(--primary)).
FlenxNotFound
Página 404 pronta — usa o SiteLayout do site. Genérica e editável: textos (code, title, message) e botões (actions) são personalizáveis. O primeiro botão sai destacado; os demais, suaves.
FlenxPage
Raiz de uma página do site — agrupa os blocos (header, seções, footer) e já injeta o estilo-base do Flenx por baixo. Use no lugar daquele div(classes: 'flenx-site') + <style> na mão: FlenxPage([SiteHeader(...), FlenxHero(...), ...]).
FlenxPalette
Paleta central do Flenx — fonte única de cores para o site (CSS) e o painel (tema Flutter). Dart puro (sem Flutter) para poder ser usada também no servidor. Edite aqui e tudo (site claro + admin claro/escuro) acompanha.
FlenxPdfViewer
Visualizador de um PDF em tela cheia: opcionalmente uma barra (voltar + imprimir + baixar) por cima do PDF embutido. Usado para servir um documento comercial já gerado em PDF — imprime/baixa sempre igual, sem depender do CSS de impressão do navegador.
FlenxPricePill
Uma pílula de preço (ex.: "A PARTIR DE R$ 99,90").
FlenxPricePills
Faixa de pílulas de preço ("A PARTIR DE R$ ...").
FlenxProductCard
Card de produto estilo marketplace de moda: foto/ícone, selo de desconto, marca, nome, preço antigo riscado, preço, parcelas e botão comprar. Tudo por parâmetros Dart — o componente desenha o HTML por baixo.
FlenxProductDetail
Página de detalhe de um produto (estilo marketplace): trilha, foto grande, marca, nome, preço (antigo/atual), parcelas, selo e botões de compra + descrição. Tudo por parâmetros Dart.
FlenxProductGrid
Grade de produtos (catálogo) usando os mesmos cards.
FlenxProductShelf
Prateleira de produtos: cabeçalho colorido (com contador opcional) + carrossel horizontal de cards. Passe os cards prontos em products.
FlenxPromo
Uma campanha de propaganda agendada exibida no PromoModal.
FlenxPromoModal
Modal de propaganda no centro da tela, agendado por período. Passe uma lista de Promo com datas; o modal escolhe, no navegador, a primeira campanha ativa (dentro do período e ainda não fechada) e a exibe centralizada, com overlay, carrossel de imagens opcional, botão de fechar e ação opcional. Renderize via floatingButtons.
FlenxRedirect
Página de redirecionamento (client-side) — leva o visitante a to na hora (meta refresh + location.replace), com um link de fallback. Ideal para links curtos/de campanha (ex.: /wpp → WhatsApp). Só-Dart.
FlenxRive
Animação Rive — carrega um arquivo .riv via @rive-app/canvas. O runtime JS é carregado do CDN automaticamente (uma vez por página).
FlenxRoute
Uma rota do site: o SEO (meta) e o componente (builder) juntos — uma única definição alimenta o render, as meta tags, o sitemap e o llms.txt.
FlenxRow
Linha (horizontal) — como o Row do Flutter. Com wrap true, quebra para baixo quando a tela é estreita (responsivo automático, sem media query).
FlenxSection
Seção da página — uma faixa com espaçamento vertical e um contêiner central de largura máxima (como um bloco de tela). Estilo por parâmetros; sem CSS.
FlenxSheet
Invólucro de "folha" branca centralizada (A4) para documentos longos — propostas, contratos, cartas. Fundo cinza na tela; imprime limpo em A4.
FlenxSidebarLayout
Layout de duas colunas (estilo portal): conteúdo principal largo + barra lateral. Empilha sozinho no mobile (flex-wrap), sem media query.
FlenxSpacer
Espaçamento vertical fixo — como o SizedBox(height: X) do Flutter. Use dentro de FlenxColumn quando precisar de espaçamento pontual diferente do gap uniforme da coluna.
FlenxStatItem
Um número de destaque do FlenxStats: valor grande + rótulo curto.
FlenxStats
Faixa de estatísticas / prova social (números que geram confiança). Só-Dart — o CSS fica encapsulado aqui. Ideal logo abaixo do hero.
FlenxStep
Um passo do "como funciona".
FlenxSteps
Seção de passos numerados. FlenxSteps(title: '...', steps: [FlenxStep(...)]).
FlenxStoreShell
Raiz de uma página de loja (marketplace de moda). Injeta o CSS do kit de e-commerce e desenha o cabeçalho (logo, CEP, busca, conta/desejos/carrinho), a barra de categorias, a faixa de cupom e o rodapé. O miolo vem em children (hero, pílulas, prateleiras, grade...). O app só passa Dart.
FlenxStyle
Estilo global no padrão Flutter (nomes de propriedades tipados), convertido em CSS pela flenx. Puro-Dart (seguro na geração estática — sem dart:ui).
FlenxSvg
Componente SVG — arquivo externo (via <img>) ou inline (string SVG direto no DOM, permitindo estilização via CSS).
FlenxText
Texto — como o Text do Flutter, com estilo por parâmetros (nada de CSS).
FlenxTracking
Configuração de rastreamento/omnipresença do site. Genérica: passe só os provedores que o projeto usa (nenhum é fixo). O dispatcher flenx.track distribui um evento para TODOS os provedores de uma vez.
FlenxTrustBar
Barra de "construído sobre / parceiros": um rótulo opcional + uma lista de nomes em destaque. Substitui aquele bloco de div/span por puro Dart: FlenxTrustBar(label: 'Construído sobre', items: ['jaspr','Flutter','Dart']).
FlenxViewEvent
Dispara um evento de flenx.track no carregamento da página — drop-in para páginas de serviço/conteúdo (ex.: ViewContent). Configurável: event e params. Sem rastreamento configurado é no-op (o runtime flenx enfileira e respeita o consentimento).
Fragment
A utility component that renders its children without any wrapper element.
FutureBuilder<T>
Component that builds itself based on the latest snapshot of interaction with a Future.
Ga4
Google Analytics 4. Respeita Consent Mode → init imediato.
GlobalKey
A key that is unique across the entire app.
GlobalNodeKey<T extends Node>
A global key that provides access to the dom web.Node that is associated with its element.
GlobalObjectKey
A global key that takes its identity from the object used as its value.
GlobalObjectNodeKey<T extends Node>
A global node key that takes its identity from the object used as its value.
GlobalObjectStateKey<T extends State<StatefulComponent>>
A global state key that takes its identity from the object used as its value.
GlobalStateKey<T extends State<StatefulComponent>>
A global key that provides access to the State that is associated with its element.
Google Ads. conversions mapeia evento → AW-XXX/label (dispara conversão).
HeadingBlock
Subtítulo (intertítulo) dentro do corpo. level vai de 2 a 4 — o título principal (H1) é o título do post, não um bloco.
IframeEmbed
Embute uma URL qualquer (outro site, vídeo do YouTube, mapa, formulário…) dentro do seu site, num <iframe> responsivo e seguro.
ILeadStore
Persiste leads capturados pelo formulário. Implementação padrão grava em um arquivo JSONL; o usuário pode trocar por banco/API/CRM facilmente.
ImageBlock
Imagem com legenda e crédito (estilo G1). Renderiza como <figure> para permitir legenda semântica — o renderer Markdown deixa HTML de bloco passar.
Import
Define a platform specific import with auto-generated stubbing.
InheritedComponent
Base class for components that efficiently propagate information down the tree.
InheritedElement
An Element that uses an InheritedComponent as its configuration.
InheritedModel<T>
InheritedModelElement<T>
InMemoryDbExecutor
Implementação em memória — para testes e desenvolvimento.
InsertInto
Insere os campos recebidos na tabela do model.
IRouteSource
Contrato de uma fonte de rotas. Cada fonte sabe produzir a lista de RouteMeta que representa — estáticas ou expandidas de dados dinâmicos.
JasprBadge
A "Built with Jaspr" badge component.
JsonlDbExecutor
Executor que persiste cada tabela como um arquivo <dir>/<tabela>.jsonl (uma linha JSON por registro). Útil para dev/demo sem instalar MySQL. Em produção use um MySqlExecutor; o alvo PHP gera PDO/MySQL.
JsonLdGenerator
Constrói os objetos schema.org (JSON-LD) de uma página: Organization e WebSite (site-wide) + o tipo da página (Article/FAQPage/...) + BreadcrumbList.
JwtService
Serviço de token JWT (HS256) — emite e valida tokens próprios do app. Para Firebase Auth, veja FirebaseAuthVerifier (valida o ID token do Firebase).
Key
A Key is an identifier for Components and Elements.
LabeledGlobalKey
A global key with a debugging label.
LabeledGlobalNodeKey<T extends Node>
A global node key with a debugging label.
LabeledGlobalStateKey<T extends State<StatefulComponent>>
A global state key with a debugging label.
Lead
Lead capturado pelo formulário de contato.
LeadForm
Formulário de captura de leads (nome, e-mail, mensagem). Envia via POST (HTML puro, sem JS) para action. Estilizado inline (sem classes CSS); campos e textos personalizáveis. Mostra agradecimento quando submitted.
LeafElement
LeafRenderObjectElement
LinkedInInsight
LinkedIn Insight Tag. conversions mapeia evento → conversion id numérico.
ListBlock
Lista de itens — ordenada (números) ou não (marcadores).
Listenable
An object that maintains a list of listeners.
ListenableBuilder
ListPaginated
Lista (paginada) registros da tabela.
LlmsFullGenerator
Gera o /llms-full.txt: todo o conteúdo do site concatenado em Markdown, para ingestão completa por LLMs/agentes.
LlmsTxtGenerator
Gera o /llms.txt no formato llmstxt.org: H1 com o nome, blockquote de resumo e seções H2 com listas de links curados - [título](url): resumo.
LocalKey
A key that is not a GlobalKey.
LoginOption
Opção dentro do menu/botão de login expansível (ex.: "Entrar", "Criar conta", "Entrar com Google").
MarkdownBlogSource
Fonte de posts em Markdown: arquivos .md em uma pasta do filesystem. Mantém o fluxo clássico do Flenx (criar post = soltar um .md).
MarkdownRenderer
Converte Markdown em HTML (usado para renderizar o corpo dos posts no SSR). Usa o pacote oficial markdown com extensões GitHub-flavored.
Item do menu de topo institucional. Pode ser um link simples (clicável) ou um item expansível (dropdown) quando tem children. Menu 100% customizável.
MercadoPagoGateway
Gateway do Mercado Pago (Checkout Pro via Preferences).
MetaPixel
Meta Pixel (Facebook/Instagram). Sem consent mode → init após o aceite.
MetaTagsBuilder
Constrói os componentes do <head> para uma rota: meta description, robots, canonical, Open Graph, Twitter Cards, theme-color, hreflang e os blocos JSON-LD. O <title> é tratado pelo Document(title:).
MultiChildElement
An Element that has multiple children based on a proxy list.
MultiChildRenderObjectElement
Notification
A notification that can bubble up the component tree.
NotificationCenter
Central de notificações: ao notificar, dispara para todos os canais ativos automaticamente. Erros de um canal não afetam os outros.
NotificationChannel
Um meio de notificação (push, SMS, WhatsApp, e-mail...). Implemente para adicionar canais. enabled indica se está configurado/ativo.
NotificationMessage
Mensagem de notificação enviada a um ou mais meios. Carrega os destinos possíveis (e-mail, telefone, device token) — cada canal usa o que precisa.
ObserverComponent
Base class for components that observes the build execution of it's descendants in the Component tree.
ObserverElement
An Element that uses an ObserverComponent as its configuration. You can override willRebuildElement, didRebuildElement and didUnmountElement to execute the required logic.
PageMeta
Metadados de paginação devolvidos no envelope (meta).
PageRequest
Parâmetros de paginação de uma listagem (vêm de ?page e ?perPage).
PageResult
Resultado da resolução de uma rota pelo app: o componente a renderizar e se ele é uma ilha Flutter (precisa do bootstrap do Flutter no <head>).
ParagraphBlock
Parágrafo de texto. O conteúdo aceita Markdown inline (negrito, links...).
PaymentGateway
Contrato comum de gateway de pagamento. Cada provedor (Asaas, Mercado Pago) implementa esta interface; o usuário só escolhe qual e passa as credenciais.
PaymentRegistry
Registro de provedores de pagamento. Já vem com Asaas e Mercado Pago; para um provedor novo basta PaymentRegistry.register('stripe', ...) — nenhum arquivo da lib precisa ser alterado (Open/Closed).
PaymentRequest
Dados para criar uma cobrança/checkout, independente do provedor.
PaymentResult
Resultado de uma criação de checkout.
PaymentService
Fachada de pagamento: o usuário só escolhe o provedor em PAYMENT_PROVIDER (asaas | mercadopago) e adiciona a credencial correspondente no .env.
PhpApiGenerator
Gera o backend em PHP (PDO + MySQL) a partir da MESMA definição declarativa usada no alvo Dart. Emite um _flenx.php (base: .env, PDO, envelope, paginação, CORS) e um arquivo por endpoint. O usuário não escreve PHP.
PostBlock
Bloco de conteúdo de um post rico (estilo G1). Cada tipo de bloco (parágrafo, subtítulo, imagem, citação, lista, embed, divisor) é uma subclasse com seu próprio arquivo. Um bloco sabe se serializar para JSON (persistência estruturada) e para Markdown (render via MarkdownRenderer).
PostBlockFactory
Reconstrói um PostBlock a partir do seu JSON ({"type": ...}). Centraliza o mapeamento tipo→classe; blocos desconhecidos viram parágrafo (fail-safe).
PostDocument
Documento de um post rico: uma sequência ordenada de PostBlock (estilo G1). É a representação que o editor manipula. Serializa para:
QuoteBlock
Citação / destaque. cite é a fonte opcional (autor, veículo).
RawableRenderObject
RawableRenderText
Redirect
Redireciona (303) para location — padrão Post/Redirect/Get.
RenderElement
RenderFragment
RenderObject
RenderText
RespondJson
Responde com um JSON fixo.
RestApiDbExecutor
DbExecutor que persiste chamando uma API REST do Flenx (alvo Dart OU PHP — é só apontar a URL). Usa o envelope padrão {success, data, meta} e o contrato CRUD por tabela:
RobotsTxtGenerator
Gera o robots.txt a partir das regras por crawler do SeoConfig, referenciando o sitemap. Inclui buscadores tradicionais e crawlers de IA.
RouteContext
Contexto passado para cada rota: caminho e query string.
RouteMeta
Metadados de UMA rota — a fonte única de verdade. A partir dela o framework deriva automaticamente: meta tags, Open Graph/Twitter, JSON-LD, entrada no sitemap, item do llms.txt e conteúdo do llms-full.txt.
RouteRegistry
Agrega múltiplas IRouteSource (estáticas + dinâmicas) e resolve todas as rotas do site num único conjunto deduplicado por path.
SendEmail
Envia um e-mail (servidor) para to.
SeoAddress
Endereço físico para schema.org LocalBusiness (PostalAddress + GeoCoordinates).
SeoConfig
Configuração global de SEO/GEO/AEO do site. Fonte única para baseUrl, identidade da organização e política de crawlers.
SeoEndpoints
Monta os endpoints de otimização servidos automaticamente pelo servidor: /robots.txt, /sitemap.xml, /llms.txt e /llms-full.txt.
SeoService
Um serviço oferecido pela empresa — vira schema.org Service no JSON-LD. Ajuda GEO/AEO: motores de IA citam serviços específicos ("quem faz X em SP?").
ServerOptions
Global options for configuring Jaspr on the server.
SiteBrand
Identidade da marca no header: logo (imagem ou texto) com link para a home.
SiteConfig
Configuração central do site institucional: marca, nav, contato e WhatsApp.
Header de site institucional: somente top menu. Logo com link home, menu customizável (itens clicáveis ou dropdowns expansíveis) e botão de login (clicável ou expansível). Responsivo: vira hambúrguer (<details>) no mobile.
SiteLayout
Moldura padrão de um site: header + estilo base + conteúdo + rodapé + botão de WhatsApp. Genérica — recebe marca, menus e rodapé por parâmetro, para o app de exemplo (ou qualquer dev) montar com o próprio conteúdo.
SitemapIndexGenerator
Gera um <sitemapindex> apontando para múltiplos sitemaps — usado quando o site excede 50.000 URLs (ou 50MB) por arquivo.
SitemapXmlGenerator
Gera um sitemap.xml (urlset) válido conforme sitemaps.org 0.9, incluindo lastmod, changefreq, priority e alternâncias hreflang quando houver.
SiteSettings
Acesso (servidor) às configurações do site guardadas em site_settings (registro único, coluna data em JSON). As páginas públicas leem daqui o que o admin editou (ex.: textos da home). Ver settingsModel.
SqlMigrationGenerator
Gera o SQL de criação das tabelas (MySQL) a partir dos DbModel, incluindo chaves primárias e estrangeiras (relações). Roda uma vez.
State<T extends StatefulComponent>
The logic and internal state for a StatefulComponent.
StatefulBuilder
A platonic component that both has state and calls a closure to obtain its child component.
StatefulComponent
A component that has mutable state.
StatefulElement
An Element that uses a StatefulComponent as its configuration.
StatelessComponent
A component that does not require mutable state.
StatelessElement
An Element that uses a StatelessComponent as its configuration.
StaticRouteSource
Fonte de rotas estáticas — páginas fixas conhecidas em tempo de build (home, sobre, contato, etc.). Equivale às páginas do file-based routing.
StreamBuilder<T>
Component that builds itself based on the latest snapshot of interaction with a Stream.
StreamBuilderBase<T, S>
Base class for components that build themselves based on interaction with a specified Stream.
SupabaseDbExecutor
DbExecutor que persiste no Supabase (via PostgREST). Mesma interface dos demais — basta escolher e adicionar as credenciais.
SyncAnnotation
SynchronousFuture<T>
A Future whose then implementation calls the callback immediately.
Tag
Tag de blog — transversal e plana (várias por post), como no WordPress.
Taxonomy
Resultado da indexação taxonômica do blog: categorias e tags com seus posts.
TaxonomyBuilder
Indexa os posts em categorias e tags, produzindo as páginas de arquivo. Pura (sem disco) → fácil de testar.
Text
Represents a plain text node with no additional properties.
TextElement
TrackingProvider
Contrato de um provedor de rastreamento. Cada provedor sabe emitir:
TwilioSmsChannel
Canal de SMS via Twilio. Ativo quando há credenciais no .env (TWILIO_SID, TWILIO_TOKEN, TWILIO_FROM).
TwilioWhatsappChannel
Canal de WhatsApp via Twilio (prefixo whatsapp:). Ativo quando há credenciais no .env (TWILIO_SID, TWILIO_TOKEN, TWILIO_WHATSAPP_FROM).
UniqueKey
A key that is only equal to itself.
UpdateById
Atualiza um registro por id com os campos recebidos.
ValueKey<T>
A key that uses a value of a particular type to identify itself.
ValueListenable<T>
An interface for subclasses of Listenable that expose a value.
ValueListenableBuilder<T>
ValueNotifier<T>
A ChangeNotifier that holds a single value.
WhatsappButton
Botão flutuante de WhatsApp (canto inferior direito). Abre o wa.me com a mensagem pré-preenchida. Estilizado inline (sem classes CSS).

Enums

AdPosition
Posição sugerida de um anúncio numa página.
ChangeFreq
Frequência de mudança de uma URL no sitemap (spec sitemaps.org 0.9).
ConnectionState
The state of connection to an asynchronous computation.
DocPrintFormat
Como o documento comercial se comporta na tela e na impressão.
FlenxAlertVariant
Variante visual do FlenxAlert.
FlenxAlign
Alinhamento em FlenxColumn/FlenxRow (vira flexbox por baixo).
FlenxAnimation
Tipos de animação disponíveis no FlenxAnimated.
FlenxButtonVariant
Variante visual de FlenxButton.
FlenxCardHover
Estilo de animação ao passar o mouse sobre um FlenxCard.
FlenxCorner
Canto onde o botão flutuante fica fixado.
FlenxPromoRepeat
Frequência com que a campanha volta a aparecer após ser fechada.
FlenxTextAlign
Alinhamento de texto.
HttpMethod
Verbo HTTP de um endpoint.
ImportPlatform
Alinhamento dos menus no header institucional (configurável pelo usuário).
PageKind
Tipo semântico de uma página. Mapeia para og:type (Open Graph) e para o @type do schema.org (JSON-LD), permitindo gerar dados estruturados certos.
PaymentStatus
Situação de uma cobrança, normalizada entre provedores.
RelationKind
Tipo de relacionamento entre tabelas.
SchedulerPhase
SqlType
Tipos de coluna suportados, mapeados para SQL (dialeto MySQL — comum em hospedagem PHP e no alvo Dart).

Mixins

ComponentsBinding
Main app binding, controls the root component and global state
NotifiableElementMixin
Mixin this class to allow receiving Notification objects dispatched by child elements.
OnFirstBuild
Mixin on StatelessComponent that performs some async task on the first build
PreloadStateMixin<T extends StatefulComponent>
Mixin on State that preloads state on the server
RenderObjectElement
SchedulerBinding
SyncStateMixin<T extends StatefulComponent, U>
Mixin on State that syncs state data from the server to the client.

Constants

blogCss → const String
CSS do blog — listagem em cards e artigo com tipografia legível (prose). Usa os tokens (:root) definidos em flenxSiteCss.
blogPostsModel → const DbModel
Schema da tabela de posts do blog (fonte de banco). Inclua em dbModels para gerar a migration e use em endpoints CRUD (InsertInto/UpdateById/...). O corpo fica em body (Markdown) e, opcionalmente, os blocos estruturados do editor em blocks (JSON) — ver PostDocument.
categoriesModel → const DbModel
Tabela de categorias do blog/portal (lista curada, editável pelo admin). Inclua em dbModels e use em endpoints CRUD. O slug casa com as páginas de arquivo do blog (/blog/categoria/<slug>); o name é exibido nos menus.
client → const ClientAnnotation
Used to annotate a client component.
decoder → const DecoderAnnotation
Used to annotate an decoder function for a custom model.
encoder → const EncoderAnnotation
Used to annotate an encoder function for a custom model.
factory → const Object
Annotation on a function that creates new objects.
immutable → const Immutable
Annotation on an immutable class.
kDebugMode → const bool
A constant that is true if the application was compiled in debug mode.
kGenerateMode → const bool
A constant that is true if the application is running in static-site-generation mode.
kIsWasm → const bool
A constant that is true if the application was compiled to WebAssembly.
kIsWeb → const bool
A constant that is true if the application was compiled to run on the web.
kReleaseMode → const bool
A constant that is true if the application was compiled in release mode.
kVerboseMode → const bool
A constant that is true if the application was run in verbose mode.
mustCallSuper → const Object
Annotation on instance member that overriding members must call.
nonVirtual → const Object
Annotation on instance member that must not be overridden.
optionalTypeArgs → const Object
Annotation on type arguments that can safely be omitted.
protected → const Object
Annotation on instance member that should only be used by subclasses.
settingsModel → const DbModel
Configurações do site em um único registro (id=1) com a coluna data (JSON). Usado para editar a tela home e opções gerais pelo admin sem código: o admin grava o JSON, e as páginas públicas leem dele. Ver FlenxSettingsPage e SiteSettings.
sync → const SyncAnnotation
usersModel → const DbModel
Tabela de usuários do admin (com papel/permissões). Inclua em dbModels para gerar a migration e use em endpoints CRUD. O campo role casa com os papéis de AppRole/AdminPermissions ('Administrador', 'Editor', ...).
visibleForTesting → const Object
Annotation on a public declaration that should only be used in tests.

Properties

flenxSiteCss String
CSS do site institucional Flenx — visual moderno (estilo Astra/landing). As variáveis de cor (:root) vêm da paleta central FlenxPalette.
no setter

Functions

commercialDocsRoutes({required List<CommercialDoc> docs, required String title, String basePath = '/comercial', String eyebrow = 'Central Comercial', String subtitle = '', String? logoSrc, String accent = '#F36B16', String accentDark = '#D94E00', String accentLight = '#FF8A31', String ink = '#071C43', String ink2 = '#0F2F69', String barColor = '#071C43'}) List<FlenxRoute>
Gera as rotas da Central de Documentos Comerciais a partir de uma lista de CommercialDoc. Basta espalhar o resultado nas rotas do site:
describeIdentity(Object? object) String
Returns a summary of the runtime type and hash code of object.
flenxTrackJs(String event, {Map<String, String> params = const {}}) String
Trecho JS para atributos onclick/onsubmit: dispara o evento em TODOS os pixels de uma vez, sem quebrar a navegação. Ex.: attributes: {'onclick': flenxTrackJs(FlenxEvent.contact)}.
lerpDuration(Duration a, Duration b, double t) Duration
Linearly interpolate between two Durations.
objectRuntimeType(Object? object, String optimizedValue) String
Framework code should use this method in favor of calling toString on Object.runtimeType.
runApp(Component app) → void
Main entry point for a jaspr app
shortHash(Object? object) String
Returns a 5 character long hexadecimal string generated from Object.hashCode's 20 least-significant bits.

Typedefs

AsyncCallback = Future<void> Function()
Signature of callbacks that have no arguments and return no data, but that return a Future to indicate when their work is complete.
AsyncComponentBuilder<T> = Component Function(BuildContext context, AsyncSnapshot<T> snapshot)
Signature for strategies that build components based on asynchronous interaction.
AsyncValueGetter<T> = Future<T> Function()
Signature for callbacks that are to asynchronously report a value on demand.
AsyncValueSetter<T> = Future<void> Function(T value)
Signature for callbacks that report that a value has been set and return a Future that completes when the value has been saved.
BlogLayoutBuilder = Component Function(Component blogPage)
Transforma a página do blog no layout do site (header/footer).
ComponentBuilder = Component Function(BuildContext context)
Signature for a function that creates a component, e.g. StatelessComponent.build or State.build.
DbExecutorFactory = DbExecutor Function(Map<String, String> env, Client? client)
Cria um DbExecutor a partir do ambiente (.env) + client HTTP opcional.
ElementVisitor = void Function(Element element)
Signature for the callback to BuildContext.visitChildElements.
EmailSender = void Function(String to, String subject, Map<String, String> data)
Hook de envio de e-mail (servidor).
EventCallback = void Function(Event event)
FlenxPageBuilder = Component Function(RouteContext ctx)
Constrói o conteúdo de uma rota.
GatewayFactory = PaymentGateway Function(Map<String, String> env, Client? client)
Cria um gateway a partir do ambiente (.env) + client HTTP opcional.
IterableFilter<T> = Iterable<T> Function(Iterable<T> input)
Signature for callbacks that filter an iterable.
StatefulComponentBuilder = Component Function(BuildContext context, StateSetter setState)
Signature for the builder callback used by StatefulBuilder.
StateSetter = void Function(VoidCallback fn)
The signature of State.setState functions.
TokenVerifier = FutureOr<Map<String, Object?>?> Function(String token)
Verifica um token (Bearer) e devolve os claims, ou null se inválido.
ValueChanged<T> = void Function(T value)
Signature for callbacks that report that an underlying value has changed.
ValueGetter<T> = T Function()
Signature for callbacks that are to report a value on demand.
ValueSetter<T> = void Function(T value)
Signature for callbacks that report that a value has been set.
VoidCallback = void Function()
Signature of callbacks that have no arguments and return no data.