all_validations_br
Complete Flutter toolkit for Brazilian validations, form masks, typed results, structured logging, and authenticated cryptography.
What this package is like to depend on
Last release 20 days ago
03 Aug 2026
Ships unpredictably
gaps range from 1 weeks to 2.3 years
Nearly every release is documented
notes for 34 of 37 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
37 releases · first in 2021
19 releases in the last 12 months
see the full history below
Release timeline
37 releases · Sep 2021 to Aug 2026Releases
latest 37-
5.0.203 Aug 2026Release notes
Open source →Breaking changes reexportados
AllValidations.validatePixKeyagora retornaResult<ValidationError, PixKeyType>em vez de rótulos textuais.BrZod.type<T>()agora usa verificação estritavalue is Te não aceita strings apenas por serem convertíveis.
Migração e consistência
- Removido
HelperUtil.validatePixKey; useAllValidations.validatePixKey, a fonte única que retornaPixKeyType. HelperUtil.maskPixKeypassou a delegar a classificação ao validador tipado e agora mascara CNPJ PIX alfanumérico.- Dependências mínimas atualizadas para
all_br_validations1.0.2 eall_br_forms1.0.1.
Documentação e qualidade
- Completada a documentação dartdoc da API pública do agregador e dos pacotes reexportados.
- Habilitado o lint
public_member_api_docsem todo o ecossistema. - Dependências mínimas finais do patch atualizadas para
all_br_validations1.0.3,all_crypto1.0.2,all_logger1.0.2 eall_result1.0.2.
-
5.0.102 Aug 2026Release notes
Open source →Correções
HelperUtil.validatePixKeyreconhece CNPJ válido com ou sem máscara.HelperUtil.maskPixKeymascara CNPJ e usa***para entradas desconhecidas não vazias, sem devolver o dado original.HelperUtil.isJwtExpiredtrataexpausente ou inválido como expirado, aceita datas numéricas seguras e considera a igualdade como expirada.- Adicionado
referenceTimeopcional para testes determinísticos de expiração JWT. - Os mínimos de
all_br_validationseall_loggerforam elevados para1.0.1. - O CI integrado também pode ser executado manualmente e diariamente, sem publicação automática.
-
5.0.002 Aug 2026Release notes
Open source →- Conversão do
all_validations_brem agregador mantido e fachada de compatibilidade. - Extração de
all_result,all_crypto,all_logger,all_br_validationseall_br_formsna versão 1.0.0. - Preservação do barrel principal e dos imports históricos por reexports.
- Manutenção temporária de
HelperUtilcomo API legada documentada. - Recomendação de
AllCrypto/CryptEnvelopev2 com chave externa e depreciação das serializações crypto legadas que embutem a chave. - Padronização dos READMEs bilíngues e heroes do ecossistema.
- Inclusão de documentação bilíngue, CI, verificações de fronteira e plano de publicação manual.
- Atualização major motivada pela nova arquitetura modular; os imports públicos históricos permanecem disponíveis por reexports.
Impacto de migração
- O import principal
package:all_validations_br/all_validations_br.darte os entry points públicos históricos continuam compilando. - Imports privados em
package:all_validations_br/src/...deixam de existir. Eles nunca fizeram parte da API pública e devem ser substituídos pelo barrel principal ou pelo pacote especializado responsável. validation.dart,br_zod.dart,br_logger.darteregions_validations.dartcontinuam disponíveis, mas agora emitem aviso de depreciação para orientar novos projetos aos pacotes especializados.BrLogger()passa a bloquear todos os logs em release por padrão. Aplicações que dependem de logs em produção precisam habilitá-los explicitamente comBrDevelopmentFilter(allowInRelease: true, ...)ouBrProductionFilter.- Os printers do logger exibem ícones por padrão; integrações que analisam o
texto formatado devem configurar
showIcons: falsepara preservar seu formato anterior. - Payloads históricos de
CryptUtilcontinuam legíveis. Suas serializações que embutem a chave estão depreciadas; dados novos devem usarAllCryptoeCryptEnvelopecom chave externa.
- Conversão do
-
4.5.201 Aug 2026Release notes
Open source →Correções finais de validação
AllValidations.getStateByDDDpassou a ser uma API estática utilizável.isCreditCardagora valida o formato original e o algoritmo de Luhn, além da bandeira e do comprimento.- Comparações de
DateTimenoContractpassaram a considerar o instante completo e tipos incompatíveis geram notificação em vez deTypeError. BrZod().cns()rejeita conteúdo externo e separadores arbitrários.BrZod().phone()passou a validar o formato, o DDD e os prefixos básicos de telefones fixos e celulares.- A validação de e-mail foi unificada entre
AllValidations,ContracteBrZod. BrZod.validate()preserva valoresnulle campos ausentes para validadores customizados;required()eoptional()mantêm suas semânticas.- Corrigidos exemplos e referências inválidas na documentação.
Compatibilidade — possível breaking change comportamental
Esta versão não remove nem renomeia APIs públicas. Porém, validadores que antes normalizavam silenciosamente conteúdo arbitrário agora rejeitam essas entradas. Consumidores que enviavam CNS ou telefone com caracteres externos, cartão sem Luhn válido ou e-mails com pontos/hífens inválidos precisarão normalizar a entrada explicitamente antes da validação. Além disso, callbacks de
BrZod.validate()passam a receber onulloriginal em vez de'', e comparações deDateTimeconsideram o instante completo. Essas mudanças podem alterar resultados anteriormente aceitos, mas corrigem comportamentos comprovadamente incorretos sem quebra de assinatura.Qualidade
- Adicionado
git diff --checkao workflow de CI. - Adicionados 60 testes de regressão e 1 smoke test de API pública.
- Suíte ampliada de 1.258 para 1.319 testes.
-
4.5.101 Aug 2026Release notes
Open source →Correções de validação
- Corrigida a semântica de
Contract.isTrueeContract.isFalse. - CPF e CNPJ numérico agora aceitam somente dígitos ou suas máscaras oficiais, rejeitando letras, prefixos, sufixos e separadores arbitrários.
- CNH, RENAVAM, PIS/PASEP e Título de Eleitor passaram a validar o formato original antes do cálculo dos dígitos verificadores. A máscara oficial do PIS/PASEP permanece aceita.
- RG passou a aceitar somente pontos literais opcionais como separadores e a rejeitar conteúdo externo.
- CEP passou a exigir correspondência integral com um dos formatos suportados.
AllValidations.isDateTimeagora rejeita datas impossíveis, horários fora do intervalo e separadores inválidos antes dos milissegundos.BrZod.isDate,isBeforeeisAfteragora compartilham parsing estrito e não aceitam a normalização silenciosa de datas inválidas doDateTime.- URLs passaram a usar parsing por
Uri, com regras consistentes entreAllValidations,ContracteBrZod. - Telefones com DDD 55 deixaram de ser confundidos com o código do país.
AllValidations.isUUID(null)retornafalseem vez de lançar exceção.- Regexes SHA-1 e SHA-256 passaram a validar a entrada completa.
CNPJ alfanumérico
- Corrigido o cálculo oficial dos dígitos verificadores para usar o valor
ASCII - 48, conforme Receita Federal/SERPRO. - A validação passou a aceitar somente os 14 caracteres ou a máscara oficial, sem remover caracteres proibidos antes da checagem.
- Exemplos da documentação foram substituídos por vetores com DVs válidos.
BrZod
BrZod.validate()não lança maisTypeErrorquando um campo aninhado recebe um tipo incompatível.- Cada schema é executado uma única vez por validação, inclusive em mapas aninhados.
Qualidade
- Adicionadas suítes de regressão test-first e contratos de consistência entre as APIs públicas, sempre acompanhados por vetores independentes.
- Adicionado workflow de CI com analyzer, testes e publish dry-run.
- Suíte ampliada de 1.110 para 1.258 testes.
- Corrigida a semântica de
-
4.5.030 Jun 2026Release notes
Open source →Criptografia — qualidade e ergonomia
CryptAlgorithm— novo enum públicoO campo
algorithmdoEncryptedPayloadpassou deStringpara o enum fortemente tipadoCryptAlgorithm, com autocomplete e exaustividade garantida pelo compilador noswitch:// Antes (string literal sem autocomplete) EncryptedPayload(algorithm: 'aes-cbc', ...) // Agora (enum com autocomplete e type-safety) EncryptedPayload(algorithm: CryptAlgorithm.aesCbc, ...)Valores disponíveis:
chacha20Poly1305,aesGcm,aesCbc,aesCtr. Cada case expõe.value(string JSON) eCryptAlgorithm.fromString()para desserialização retrocompatível.CryptUtil.decryptAnyagora usaswitchexaustivo — o compilador garante que todo algoritmo suportado está coberto, sem necessidade de cláusuladefault.EncryptedPayload—tageaadopcionaisOs campos
tageaadagora são opcionais no construtor e assumemUint8List(0)quando omitidos. Elimina boilerplate em modos sem autenticação:// Antes EncryptedPayload( algorithm: CryptAlgorithm.aesCbc, ciphertext: base64.decode(ct), key: key, nonce: iv, tag: Uint8List(0), // obrigatório, mas sempre vazio em CBC/CTR aad: Uint8List(0), // idem ); // Agora EncryptedPayload( algorithm: CryptAlgorithm.aesCbc, ciphertext: base64.decode(ct), key: key, nonce: iv, );Código existente que passa
tag/aadexplicitamente continua funcionando.Correção de bug — Inc128 / Inc32 em
Uint8List(AES-CTR e AES-GCM)++ctr[i]em Dart retorna o valor pré-truncagem (ex.:256quando o byte vale0xff), o que impedia o carry de propagar corretamente no incremento big-endian do contador. O bug afetava:- AES-CTR: blocos 2+ do ciphertext incorretos quando qualquer byte do
contador transbordava de
0xffpara0x00. - AES-GCM
_inc32/_gctr: mesma condição nos últimos 4 bytes; não manifestado nos testes NIST anteriores porque nenhum contador chegava a0xff.
Correção aplicada em
aes_ctr.darteaes_gcm.dart:// Antes (bug: verifica valor pré-truncagem) if (++ctr[i] != 0) break; // Depois (correto: verifica valor já truncado a 8 bits) ctr[i]++; if (ctr[i] != 0) break;Todos os vetores NIST SP 800-38A F.5.1 (AES-128-CTR) e F.5.5 (AES-256-CTR) passam após a correção.
Documentação
EncryptedPayloadganhou dartdoc detalhado por campo, com tabela de tamanhos por algoritmo, exemplo de interop com APIs externas (Flavors /.env) e orientação sobre quando construir manualmente vs. usarCryptUtil.CryptAlgorithmdocumentado com dartdoc por case.- README atualizado: nova seção
🔐 Criptografiacom tabela de algoritmos, exemplos de todos os métodos e badge de total de testes (1110).
- AES-CTR: blocos 2+ do ciphertext incorretos quando qualquer byte do
contador transbordava de
-
4.4.030 Jun 2026Release notes
Open source →Módulo de criptografia expandido — puro Dart, zero dependências
Implementação completa de criptografia simétrica, hash e MAC em Dart puro (apenas
dart:typed_data,dart:math,dart:convert), seguindo as especificações NIST / RFC com vetores de teste verificados via Pythoncryptography.Novos algoritmos
Algoritmo Spec Classe SHA-256 FIPS 180-4 sha256()HMAC-SHA256 RFC 2104 / RFC 4231 hmacSha256(),hmacEqual()AES-GCM (AEAD) NIST SP 800-38D AesGcmAES-CBC + PKCS#7 NIST SP 800-38A AesCbcAES-CTR + Inc128 NIST SP 800-38A AesCtrSuporte a AES-128 (chave 16 bytes) e AES-256 (chave 32 bytes) em todos os modos AES.
CryptUtil — API unificada ampliada
// AES-256-GCM (AEAD) final payload = CryptUtil.encryptAesGcm(bytes, key: key); final plain = CryptUtil.decryptAesGcm(payload); // AES-CBC final payload = CryptUtil.encryptAesCbc(bytes, key: key); final plain = CryptUtil.decryptAesCbc(payload); // AES-CTR final payload = CryptUtil.encryptAesCtr(bytes, key: key); final plain = CryptUtil.decryptAesCtr(payload); // Dispatch automático pelo campo algorithm final plain = CryptUtil.decryptAny(payload); // Geração de material criptográfico final key32 = CryptUtil.generateKey(); // 32 bytes (AES-256 / ChaCha20) final key16 = CryptUtil.generateKey128(); // 16 bytes (AES-128) final nonce = CryptUtil.generateNonce(); // 12 bytes (GCM / ChaCha20) final iv = CryptUtil.generateIv(); // 16 bytes (CBC / CTR)EncryptedPayload — campo
algorithmO modelo [EncryptedPayload] ganhou o campo
algorithm(retrocompatível — payloads antigos sem o campo assumem'chacha20-poly1305').Novo barrel
crypt.dart// Para projetos que usam apenas o módulo de criptografia: import 'package:all_validations_br/crypt.dart';Testes
Todos os algoritmos novos possuem testes unitários com vetores de referência verificados por Python
cryptography/ OpenSSL:test/sha256_test.dart— NIST FIPS 180-4 + RFC 4231 (HMAC)test/aes_gcm_test.dart— NIST SP 800-38Dtest/aes_cbc_ctr_test.dart— NIST SP 800-38A (F.2 CBC, F.5 CTR)
-
4.3.030 Jun 2026Release notes
Open source →🎭 ExpiryMask — Nova máscara para data de expiração (MM/AA e MM/AAAA)
Nova classe
ExpiryMaskpara campos de data de expiração que aceitam tanto ano com 2 quanto com 4 dígitos (documentos, passaportes, CNH).TextField( inputFormatters: [ExpiryMask()], )Entrada Saída Formato '1224''12/24'MM/AA '12245''12/245'MM/AAA '122024''12/2024'MM/AAAA '1220249''12/2024'truncado no 6° dígito Para campos de cartão de crédito/débito, continue usando
CardExpiryMask— que já suporta MM/AA e MM/AAAA e permanece inalterada.
🐛 Correções de testes — valores de exemplo inválidos
Corrigidos valores de exemplo nos testes unitários que não satisfaziam os algoritmos já implementados (os algoritmos estavam corretos; os dados de teste estavam errados):
Validador Valor anterior (inválido) Valor corrigido isRenavam— 11 dígitos'97832655694''97832655697'isRenavam— 9 dígitos'732655694''732655692'isTituloEleitor— SP (cod 01)'906701490856''123456780191'isCns— definitivo'700616457492003''700616457492001'isCns— provisório'144477462150010''144477462150004'CnpjAlfanumerico.format— input'AB1234567800AB99'(16 chars)'AB1234567800AB'(14 chars)Nenhuma lógica de validação foi alterada.
⚠️ Breaking change —
isPlacanão normaliza entrada para maiúsculasAntes (4.2.0):
isPlaca('abc1234'); // true ← convertia para 'ABC1234' internamenteDepois (4.3.0):
isPlaca('abc1234'); // false ← valida o valor como recebido isPlaca('ABC1234'); // trueImpacto: código que passa strings com letras minúsculas para
isPlacae esperatrueprecisa normalizar a entrada antes:// Migração: normalize antes de chamar isPlaca(value.toUpperCase()); // comportamento equivalente ao anteriorMotivação: placas brasileiras são sempre maiúsculas por definição (DENATRAN/SENATRAN). A normalização silenciosa escondia entradas malformadas, o que é inconsistente com o comportamento dos demais validadores da biblioteca (nenhum outro normaliza silenciosamente).
-
4.2.030 Jun 2026Release notes
Open source →🧩 Extensions — Extensões null-safe em tipos nativos
Novo módulo
src/extensions/com extensões Dart sobrebool?,String?eList<T>?. Disponível automaticamente via importação padrão — nenhuma importação adicional necessária.import 'package:all_validations_br/all_validations_br.dart';BoolExtension
Getters semânticos em
bool?que diferenciam explicitamentetrue,falseenullsem lançar exceções.bool? ativo = true; ativo.isTrue; // true ativo.isFalse; // false bool? indefinido = null; indefinido.isTrue; // false — null seguro indefinido.isFalse; // false — null seguroStringExtension
Verificação de nulidade/vazio e truncagem de texto em
String?.Getter / Método Comportamento isNullOrEmptytruesenullou''— espaços não são vaziosisNotNullOrEmptyinverso de isNullOrEmptyisNullOrEmptyWithSpacetruesenull,''ou só espaços (usatrim())isNotNullOrEmptyWithSpaceinverso de isNullOrEmptyWithSpacetruncate(int maxLength)trunca ao limite e adiciona '...'; null-safe' Carlos '.isNullOrEmptyWithSpace; // false ' '.isNullOrEmptyWithSpace; // true 'Flutter é incrível'.truncate(7); // 'Flutter...'ListExtension
Verificação de nulidade/vazio em
List<T>?.List<String>? erros = null; erros.isNullOrEmpty; // true erros.isNotNullOrEmpty; // false ['CPF inválido'].isNotNullOrEmpty; // trueTestes: 25 casos em
test/extensions/extensions_test.dart.Documentação: 📄 Extensions.md
⚠️ Breaking change: nenhum. Toda a API anterior permanece inalterada.
-
4.1.028 Jun 2026Release notes
Open source →🔍 BrZod — Validador Fluente
Novo módulo de validação fluente/encadeado com foco em documentos brasileiros. Importação separada, zero dependências externas, autocontido e estruturado para eventual extração como pacote standalone.
import 'package:all_validations_br/br_zod.dart';30 métodos encadeáveis:
- Genéricos:
required,optional,min,max,email,phone,equals,type<T>,isDate,isBefore,isAfter,custom - Documentos BR:
cpf,cnpj,cnpjAlfa,cpfOuCnpj,cep,rg,placa,cnh,renavam,pisPasep,tituloEleitor,cns - Segurança:
password,uuid,url,ipv4,ipv6,regex
PasswordPolicy— política de senha configurável com presetsweak,mediumestrong, ou totalmente customizável.BrZod.validate()— validaMap<String, dynamic>contra um esquema de validators. Suporta Maps aninhados e retornaBrZodResultcomerrors(estruturado) eerrorList(notação de ponto, ex:user.email: ...).Locale customizado —
BrZod.defaultLocalepara configuração global ouBrZod(locale:)por instância. InterfaceILocaleBrZodpara tradução completa das 30 mensagens.Testes: 126 casos distribuídos em
br_zod_generic_test.dart,br_zod_br_test.dart,br_zod_security_test.dartebr_zod_integration_test.dart.Documentação: 📄 BrZod.md
📋 BrLogger — Logging Puro para Dart/Flutter
Novo módulo de logging zero dependências. Funciona em Flutter e Dart server-side. Importação separada — não interfere no resto da biblioteca.
import 'package:all_validations_br/br_logger.dart';6 níveis de log:
trace,debug,info,warning,error,fatal.Pipeline plugável:
BrLogFilter→BrLogPrinter→BrLogOutput— cada etapa é substituível.Padrão out-of-the-box: tudo visível em debug, apenas
warning+em produção. Printers com cores ANSI, output paraprint()e DevTools.Documentação: 📄 BrLogger.md
⚠️ Breaking change: nenhum. Toda a API anterior permanece inalterada. Os novos módulos usam importações separadas (
br_zod.dart,br_logger.dart) e não conflitam comall_validations_br.dart.
- Genéricos:
-
4.0.528 Jun 2026Release notes
Open source →🎭 Novos Formatters
CestMask— Código Especificador da Substituição Tributária:12.345.67(7 dígitos).IofMask— Alíquota de IOF com 6 casas decimais:1,234567(7 dígitos, entrada esquerda-direita).NupMask— Número Único de Protocolo federal:1234567-89.0123.4.56.7890(20 dígitos).CertNascimentoMask— Certidão de Nascimento:000000 11 22 3333 4 55555 666 7777777 88(32 dígitos).
Testes: 38 casos adicionados em
test/masks/cest_iof_nup_cert_mask_test.dart.⚠️ Breaking change: nenhum.
-
4.0.427 Jun 2026Release notes
Open source →📚 Documentação
Revisão e enriquecimento completo da documentação técnica. Nenhuma mudança de API ou comportamento.
Nova estrutura
docs/— documentação detalhada por classe:
-
4.0.327 Jun 2026Release notes
Open source →📝 Documentação
- Refatoração do README: eliminada duplicação de conteúdo entre as seções ⚙️ Funcionalidades e 🆘 Classes para Uso
- Nenhuma mudança de API ou comportamento
Full changelog: https://github.com/CriandoGames/all_validations_br/blob/main/CHANGELOG.md
Release notes
Open source →📝 Documentação
- Refatoração do README: eliminada duplicação de conteúdo entre as seções ⚙️ Funcionalidades e 🆘 Classes para Uso. Nenhuma mudança de API ou comportamento.
-
4.0.226 Jun 2026Release notes
Open source →🎭 Novos Formatters
CardExpiryMaskatualizada — agora suporta dois formatos de forma dinâmica:MM/AA(até 4 dígitos) eMM/AAAA(5–6 dígitos). Retrocompatível.KmMask— quilometragem com separador de milhar (.). Máx 7 dígitos (9.999.999 km). Remove zeros à esquerda.CentavosMask— variante daCurrencyMasksem prefixoR$. Entrada right-to-left em centavos.NcmMask— Nomenclatura Comum do Mercosul:1234.56.78(8 dígitos).CnsMask— Cartão Nacional de Saúde:111 2222 3333 4444(15 dígitos).AlturaMask—X,XX— ex:175→1,75.PesoMask—XXX,X— ex:7051→705,1.TemperaturaMask—XX,X— ex:365→36,5.
Testes: 70+ casos adicionados em 5 novos arquivos de teste.
⚠️ Breaking change: nenhum.
-
4.0.126 Jun 2026 -
4.0.026 Jun 2026Release notes
Open source →10 formatters prontos para uso:
Classe Máscara Dígitos máx CpfMask999.999.999-9911 CnpjMask99.999.999/9999-9914 CnpjAlfaMaskAA.123.CDE/0001-3914 PhoneMask(99) 9999-9999/(99) 99999-999910/11 CepMask99999-9998 DateMaskDD/MM/AAAA8 TimeMaskHH:MM4 CurrencyMaskR$ 1.234,5613 CardMask9999 9999 9999 999916 CardExpiryMaskMM/AA4 Destaques técnicos:
PhoneMask: detecta automaticamente fixo vs celular — o traço migra de posição 6 para 7 quando o 11° dígito é inserido.CnpjAlfaMask: converte automaticamente para maiúsculas, aceita letras e dígitos, compatível com o novo padrão CNPJ alfanumérico 2026.CurrencyMask: abordagem right-to-left — sempre mostraR$ X.XXX,XX; overflow limitado aos últimos 13 dígitos.- Todos os construtores são
const— instanciação de custo zero. static final RegExp— compilado uma única vez, reutilizado em todas as chamadas.
Testes: 134+ casos distribuídos em 6 arquivos (
test/masks/), cobrindo progressão da máscara, truncamento, filtragem de caracteres e posição do cursor.Exemplo interativo adicionado em
example/lib/main.dart— seção com 10TextFields ao vivo.⚠️ Breaking change: nenhum. Toda a API anterior permanece inalterada. Esta versão é major pelo volume e relevância das adições.
-
3.4.026 Jun 2026Release notes
Open source →🆕 Novas Funcionalidades
-
Criptografia autenticada ChaCha20-Poly1305 (
CryptUtil) — implementação Dart pura, sem dependências externas, conforme RFC 8439.CryptUtil.encryptText(text, {key?, nonce?, aad?})— cifra uma String UTF-8 e retornaEncryptedPayload.CryptUtil.decryptText(payload)— decifra e retorna a String original.CryptUtil.encryptBytes(bytes, {key?, nonce?, aad?})— cifra dados binários (List<int>).CryptUtil.decryptBytes(payload)— decifra e retornaList<int>.CryptUtil.encryptToBase64(text, {key?, nonce?, aad?})— atalho que cifra e serializa o payload como string base64 única.CryptUtil.decryptFromBase64(encoded)— atalho que deserializa e decifra de base64.CryptUtil.generateKey()— gera chave de 32 bytes viaRandom.secure.CryptUtil.generateNonce()— gera nonce de 12 bytes viaRandom.secure.
-
EncryptedPayload— modelo de resultado com suporte a serialização.toJson()/fromJson()— serialização comoMap<String, dynamic>(campos em base64).toBase64()/fromBase64()— serialização como string base64 compacta.
-
CryptException— exceção lançada quando a tag de autenticação Poly1305 não confere, indicando dados corrompidos ou chave incorreta.
🔧 Outros
pubspec.yaml— descrição atualizada para refletir os três pilares da biblioteca: validações, utilitários e criptografia.README.md— nova seção "📱 App de Exemplo" e seção completa "🔒 Criptografia Autenticada" com referência da API, exemplos de uso, serialização, AAD e boas práticas.example/lib/main.dart— adicionadas demos interativas deHelperUtileCryptUtil(encriptação/decriptação e simulação de adulteração).test/crypt_util_test.dart— 21 casos de teste cobrindo round-trip texto/bytes, nonces aleatórios, serialização JSON/base64, detecção de adulteração em ciphertext/tag/nonce, AAD mismatch e parâmetros inválidos.
⚠️ Sem breaking changes. Toda a API existente permanece inalterada.
-
-
3.3.103 Jun 2026Release notes
Open source →🔧 Correções
- Corrigido casing da pasta
Notifications→notificationspara compatibilidade com sistemas Linux (pub.dev). - Removido
dart:iodoHelperUtil— substituído porflutter/foundation.dart, habilitando suporte a todas as plataformas (iOS, Android, Web, Windows, macOS, Linux).
- Corrigido casing da pasta
-
3.3.003 Jun 2026Release notes
Open source →🆕 Novas Funcionalidades
-
Validação de Chaves PIX (
HelperUtil.validatePixKey)- Identifica o tipo da chave PIX: CPF, Celular, E-mail ou Chave Aleatória.
- Segue a ordem de validação definida pelo BACEN.
- Otimização: descarta e-mail e chave aleatória imediatamente quando o input contém apenas dígitos.
-
Mascaramento de Chave PIX (
HelperUtil.maskPixKey)- Mascara a chave PIX para exibição segura ao usuário.
- Ex: CPF
99286479174→992.***.***-74, Celular+5511912345678→+5511*****678.
-
Validação de Documentos Brasileiros
isCnh: Valida CNH com cálculo dos dois dígitos verificadores.isRenavam: Valida RENAVAM de 9 ou 11 dígitos com dígito verificador.isPisPasep: Valida PIS/PASEP com dígito verificador.isTituloEleitor: Valida Título de Eleitor com dois dígitos verificadores e estado.
-
Utilitários de data e idade (
HelperUtil)isAdult: Verifica se uma data de nascimento corresponde a maior de idade (padrão 18 anos, customizável).isValidDate: Verifica se uma data realmente existe (ex:31/02retornafalse). Aceitadd/MM/yyyyeyyyy-MM-dd.
🔧 Correções
validatePixKey— CPF agora valida dígitos verificadores viaAllValidations.isCpf(antes aceitava qualquer 11 dígitos).validatePixKey— Celular corrigido para exigir formato E.164 com9após o DDD (+55XXXXXXXXXXX).validatePixKey— Chave aleatória corrigida para UUID v4 com hífens (xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx), conforme padrão BACEN.validatePixKey— Removido;solto após bloco de e-mail.isDigit— Removida declaração duplicada de variável e corrigida referênciacleanedText→text.isGreaterThan,isLowerThan,isGreaterOrEqualsThan,isLowerOrEqualsThan— Lógica invertida corrigida: agora notificam quando a condição falha, não quando é verdadeira.areEquals— Corrigido para notificar quando os valores são diferentes.areNotEquals— Corrigido para notificar quando os valores são iguais.isBetween— Corrigido para notificar quando o valor está fora do intervalo.all_validations_br.dart— Corrigido casing do pathNotifications(causava erro em Linux/CI).
-
-
3.2.303 Feb 2025Release notes
Open source →🆕 Novas Funcionalidades
-
Validação de Código de Barras (EAN-13)
isValidEAN13: Valida se um código de barras EAN-13 é válido, garantindo conformidade com o padrão oficial.
-
Validação de Cores Hexadecimais
isValidHexColor: Verifica se uma string representa uma cor em formato hexadecimal válido.
-
Contagem de Palavras
countWords: Conta o número de palavras em uma string, útil para análise de textos e validações de preenchimento.
-
Geração de UUIDs
generateUUIDv3: Gera um UUID versão 3 baseado em namespace e nome usando MD5.generateUUIDv4: Gera um UUID versão 4 aleatório.generateUUIDv5: Gera um UUID versão 5 baseado em namespace e nome usando SHA-1.
-
-
3.2.217 Jan 2025Release notes
Open source →Novas Funcionalidades
- Remoção de Tags HTML
removeHtmlTags: Remove todas as tags HTML de um texto, retornando apenas o conteúdo limpo. Método robusto e performático para sanitização de entradas.
- Remoção de Tags HTML
-
3.2.117 Jan 2025Nothing published for this version
-
3.2.016 Jan 2025Release notes
Open source →Novas Funcionalidades
-
Criptografia e Validação de Senhas
encryptPassword: Gera uma senha criptografada utilizando uma chave de segurança personalizada.validatePassword: Valida se uma senha corresponde ao hash gerado.
-
Utilidades Adicionais
formatCurrency: Formata números para o padrão de moeda brasileiro (R$).calculatePercentage: Calcula a porcentagem de um valor em relação a um total.generateRandomString: Gera strings aleatórias de tamanho personalizado.
-
Manipulações de Texto
capitalizeWords: Converte a primeira letra de cada palavra para maiúscula.removeNonNumeric: Remove todos os caracteres não numéricos de uma string.
-
Utilidades de Datas
businessDaysBetween: Calcula o número de dias úteis entre duas datas.daysBetween: Calcula a diferença em dias entre duas datas.
-
-
3.1.215 Jan 2025Release notes
Open source →🔧 Melhorias e Novas Funcionalidades
- Atualização para Contratos:
isStrongPassword: Verifica a força de uma senha.isURL: Valida URLs.isPhoneNumber: Valida números de telefone brasileiro (celulares e fixos).isValidBRZip: Verifica o formato de CEP brasileiro.isUUID: Valida identificadores únicos (UUID).isPalindrome: Verifica se uma string é um palíndromo.customValidation: Permite validações customizadas.isEnum: Verifica se um valor pertence a um enum.isBefore: Valida se uma data é anterior a outra.isUnique: Valida se um valor é único em uma lista.- Validações para CPF, CNPJ, tamanhos mínimos/máximos de strings, entre outros.
- Atualização para Contratos:
-
3.1.115 Jan 2025Nothing published for this version
-
3.1.015 Jan 2025Release notes
Open source →🛠 Alterações e Melhorias
- Novo Método
getStateByDDD: Retorna o estado brasileiro com base no DDD.
- Suporte para validação de telefones fixos brasileiros com DDD.
- Breaking Change: Método
isPhoneNumberremovido. Substitua por:isBrazilianCellPhoneouisBrazilianLandlinepara validações específicas.
- Documentação aprimorada e novos testes unitários.
- Novo Método
-
3.0.022 Sep 2022Release notes
Open source →- Introdução de contratos para validação.
- Alteração em rotas de importação (Breaking Change).
- Documentação expandida.
-
2.3.016 Apr 2022Nothing published for this version
-
2.2.114 Mar 2022Release notes
Open source →- Correção de bugs e melhorias em validações como:
isValidBRZip(por @lucascorrea30).
- Novos testes unitários.
- Correção de bugs e melhorias em validações como:
-
2.2.024 Feb 2022 -
2.1.024 Feb 2022Release notes
Open source →- Adicionados métodos:
isMediumPassword,isStrongPassword.isNickname(por @danieldcastro).removeAccents,isPalindrome.
- Adicionados métodos:
-
2.0.023 Feb 2022 -
1.1.423 Feb 2022 -
1.1.213 Oct 2021 -
1.1.023 Sep 2021Release notes
Open source →- Renomeação de métodos:
removeCaracterespararemoveCharacters(Breaking Change).
- Adicionado método:
isRG.
- Renomeação de métodos:
-
1.0.114 Sep 2021 -
1.0.013 Sep 2021