all_validations_br 4.0.5
all_validations_br: ^4.0.5 copied to clipboard
Dart/Flutter library for Brazilian validations (CPF, CNPJ, CNH, PIX), 23 input formatters/masks, utilities (JWT, UUID, currency) and ChaCha20-Poly1305 encryption.
All Validations BR
💡 Validações brasileiras, utilitários e criptografia autenticada — tudo em uma única biblioteca Dart/Flutter, sem dependências externas.
🚀 Descrição do Projeto #
AllValidations BR é uma biblioteca Dart/Flutter com três pilares:
- Validações brasileiras — CPF, CNPJ, CNH, RENAVAM, PIS/PASEP, Título de Eleitor, chaves PIX, telefones, CEP, placas, EAN-13 e muito mais.
- Utilitários — formatação de moeda, datas, texto, JWT, UUID v3/v4/v5, HTML, PIX e informações de dispositivo.
- Criptografia autenticada — implementação Dart pura de ChaCha20-Poly1305 (RFC 8439), com geração segura de chaves, serialização em base64 e detecção automática de adulteração.
📦 Instalação #
Adicione ao seu pubspec.yaml:
dependencies:
all_validations_br: ^4.0.5
Em seguida:
flutter pub get
E importe no seu código:
import 'package:all_validations_br/all_validations_br.dart';
📱 App de Exemplo #
O diretório example/ contém um app Flutter interativo que demonstra as principais funcionalidades da biblioteca.
Para rodar:
cd example
flutter pub get
flutter run
O app está dividido em seções:
| Seção | O que demonstra |
|---|---|
| AllValidations — CPF | Validação de CPFs válidos, inválidos e formatados |
| HelperUtil — utilitários gerais | countWords, removeHtmlTags, capitalizeWords, BrFormatter.formatCurrency, daysBetween, generateUUIDv4, validatePixKey, maskPixKey |
| Máscaras de Campo — BrInputMask | 23 TextFields ao vivo: CPF, CNPJ, CNPJ Alfa, CPF/CNPJ, Telefone, CEP, Data, Hora, Moeda, Cartão, Validade, Placa, KM, Centavos, NCM, CNS, Altura, Peso, Temperatura, CEST, IOF, NUP, Certidão de Nascimento |
| CryptUtil — interativo | Botão "Encriptar / Decriptar" exibe ciphertext em base64 e o texto recuperado; botão "Simular adulteração" demonstra a detecção de CryptException |
| CryptUtil — estáticos | Round-trip encryptText → decryptText com exibição da tag Poly1305 em hex |
⚙️ Funcionalidades #
Validações — AllValidations #
- Verificação de tipos e formatos:
isNull,isNum,isNumericOnly,isNumericFloatisAlphabetOnly,isLowercase,isUppercaseisUUID,isJSON,isHexadecimalisEmail,isURL
- Validações específicas:
isCpf,isCnpj,isCnpjAlphanumeric(novo formato 2026),isRG,isValidBRZipisBrazilianCellPhone,isBrazilianLandlineisLeapYear,isValidBrazilianLicensePlate- Validação de código de barras EAN-13:
isValidEAN13 - Validação de cores hexadecimais:
isValidHexColor - Validação de chaves PIX: CPF, e-mail, celular e chave aleatória
Manipulação de Texto — AllValidations · HelperUtil #
- Remoção de caracteres especiais:
removeCharacters,removeNonNumeric,removeAccents
- Formatação de dados:
- CPF:
123.456.789-09 - CNPJ:
12.345.678/0001-95 - Celular:
(11) 99999-9999 - Moeda:
R$ 1.234,56 - Data e hora:
01/01/2023,12:30:45
- CPF:
- Outras manipulações:
- Comparação de frases:
isPhraseEqual - Capitalização de palavras:
capitalizeWords
- Comparação de frases:
Utilidades para Datas — HelperUtil #
- Conversões de horário:
- UTC para local:
convertUtcToLocal - Local para UTC:
convertLocalToUtc
- UTC para local:
- Cálculos com datas:
- Diferença entre duas datas:
daysBetween - Dias úteis entre duas datas:
businessDaysBetween - Cálculo de idade:
calculateAge
- Diferença entre duas datas:
Funções Avançadas — HelperUtil #
-
Validações por Regex:
- E-mails, URLs, UUIDs, senhas fortes
-
Geração e manipulação:
- Strings aleatórias:
generateRandomString - Números aleatórios:
generateRandomInt - Removedor Tags Html:
removeHtmlTags
- Strings aleatórias:
-
Geração de UUID:
-
generateUUIDv3- Baseado em namespace e nome com MD5 -
generateUUIDv4- UUID gerado aleatoriamente -
generateUUIDv5- Baseado em namespace e nome com SHA-1 -
Manipulação de JWT:
-
decodeJWT- Decodifica um JSON Web Token (JWT) e retorna o payload -
isJwtExpired- Verifica se o token JWT está expirado -
hasJwtClaim- Verifica se uma chave específica existe no JWT -
getJwtClaim- Obtém o valor de uma chave específica no JWT
-
-
Informações do dispositivo:
- Sistema operacional e versão do Dart:
getDeviceInfo
- Sistema operacional e versão do Dart:
Classes especializadas #
Cada classe tem documentação detalhada com exemplos completos na pasta doc/:
| Classe | Principais capabilities | Documentação |
|---|---|---|
AllValidations |
CPF, CNPJ, CNH, RG, RENAVAM, PIS, Título Eleitor, CEP, Placa, EAN-13, Cor Hex, PIX, UUID, e-mail, URL + validate*() retornando Result |
📄 AllValidations.md |
HelperUtil |
UUID v3/v4/v5, JWT decode/claims/expiry, PIX validação + máscara, datas, maioridade, strings aleatórias, remoção de HTML | 📄 HelperUtil.md |
BrFormatter |
formatCpf, generateCpf, formatCnpj, generateCnpj, formatPhone, extractDdd, formatCep, formatCurrency, parseCurrency, formatKm |
📄 BrFormatter.md |
BrData |
format, formatMonthYear, formatDayMonth, formatTime, parse, parseWithTime, validate — tudo sem o pacote intl |
📄 BrData.md |
BrInputMask |
CPF, CNPJ, CNPJ Alfa, CPF/CNPJ, Telefone, CEP, Data, Hora, Moeda, Centavos, Cartão, Validade, Placa, KM, NCM, CNS, Altura, Peso, Temperatura | 📄 BrInputMask.md |
CnpjAlfanumerico |
isValid, format, strip, generate(forceAlphanumeric) — retrocompatível com CNPJ numérico |
📄 CnpjAlfanumerico.md |
CryptUtil |
encryptText, decryptText, encryptToBase64, decryptFromBase64, generateKey, AAD, detecção de adulteração |
📄 CryptUtil.md |
Result<F, S> |
map, then, fold, guard, tryAsync, thenAsync, recover, swap + extensões em Future<Result> |
📄 Result.md |
Contract |
isEmail, isValidCPF, hasMinLen, requires → .toResult(), .toResultFirst(), .toResultAsync() |
📄 Result.md |
🧪 Exemplos de Uso #
Validação de Parâmetros #
class TestParameters extends ValidationNotifiable {
final String name;
final String email;
TestParameters({
required this.name,
required this.email,
}) {
addNotifications(Contract()
.hasMinLen(name, 2, 'TestParameters.Name',
"Nome deve ter no mínimo 2 caracteres!")
.isEmail(email, "TestParameters.Email", "Email deve ser preenchido!"));
}
}
void main() {
final testParameters = TestParameters(email: "exemplo@teste.com", name: "c");
if (testParameters.isValid) {
print("Válido");
} else {
print("Inválido");
testParameters.notifications.forEach((f) => print(f.message));
}
}
Validação de CPF #
var isCpf = AllValidations.isCpf("000.000.000-00");
// Retorna false
Validação de Cores Hexadecimais #
bool isValidColor = AllValidations.isValidHexColor('#FF5733');
// Retorna: true;
Contagem de Palavras em uma String #
int totalWords = HelperUtil.countWords('Flutter é incrível');
// Retorna: 3
Remoção de Tags HTML #
String cleanText = HelperUtil.removeHtmlTags('<p>Hello <b>World</b></p>');
// Retorna: Hello World
Remoção de Caracteres #
var remover = AllValidations.removeCharacters("000.000.000-00");
// Retorna: 00000000000
Comparação de Senhas ou Frases #
var comparacao = AllValidations.isPhraseEqual("123456789", "123456789");
// Retorna: true
Geração de UUIDs #
String uuid4 = HelperUtil.generateUUIDv4();
// Exemplo de saída: '550e8400-e29b-41d4-a716-446655440000'
Lista de Dias da Semana #
var diasDaSemana = AllValidationsGetWeek.listDaysWeekAbvr;
// Retorna: ['Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Domingo']
Remoção de Acentos e Caracteres Especiais #
var texto = AllValidations.removeAccents("áãé");
// Retorna: aae
Função para Retornar o Estado pelo DDD #
print(AllValidations.getStateByDDD("11"));
// Saída: BrazilianState.SP
📚 Documentação #
A documentação completa de cada classe — com todos os métodos, parâmetros e exemplos — está nos arquivos abaixo:
| Arquivo | Conteúdo |
|---|---|
| 📄 AllValidations.md | Todos os métodos de validação BR, validate*() com Result, Contract |
| 📄 HelperUtil.md | Utilitários de texto, datas, UUID, JWT, PIX (validação e mascaramento), maioridade |
| 📄 BrFormatter.md | Formatação e geração de CPF, CNPJ, CEP, telefone, moeda e KM |
| 📄 BrData.md | Parse, formatação e validação de datas no padrão BR sem intl |
| 📄 BrInputMask.md | Referência completa das 19 máscaras de campo com exemplos de TextField |
| 📄 CnpjAlfanumerico.md | CNPJ alfanumérico 2026 — validação, formatação e geração |
| 📄 CryptUtil.md | ChaCha20-Poly1305: criptografia, AAD, serialização e boas práticas |
| 📄 Result.md | Result<F,S>, Contract, ValidationResult e operações assíncronas |
AllValidationsGetMonth #
Fornece listas de nomes dos meses do ano para fácil acesso e manipulação.
- Exemplo de uso:
AllValidationsGetMonth.list→[Janeiro, Fevereiro, ...]
AllValidationsGetRegions #
Retorna as regiões do Brasil, útil para aplicações que necessitam de categorização geográfica.
- Exemplo de uso:
AllValidationsGetRegions.list→[Norte, Nordeste, ...]
AllValidationsGetStates #
Disponibiliza os estados brasileiros e suas siglas.
- Exemplo de uso:
AllValidationsGetStates.list→[SP, RJ, MG, ...]
AllValidationsGetWeek #
Fornece listas de dias da semana em formato abreviado, completo, apenas dias úteis e com ordenação a partir do domingo.
AllValidationsGetWeek.listDaysWeek→['Segunda-Feira', 'Terça-Feira', ..., 'Domingo']AllValidationsGetWeek.listDaysWeekAbvr→['Segunda', 'Terça', ..., 'Domingo']AllValidationsGetWeek.listWorkDays→['Segunda-Feira', ..., 'Sexta-Feira']AllValidationsGetWeek.listDaysWeekOrdered→['Domingo', 'Segunda', ..., 'Sábado']
👥 Contribuidores #
Made with contrib.rocks.
Contribuições são bem-vindas! Leia o CONTRIBUTING.md para começar.
📄 Licença #
Distribuído sob a licença MIT. Veja LICENSE para mais detalhes.
💻 Desenvolvido com ❤️ para facilitar o desenvolvimento no Flutter.