BRValidators
Pacote Dart/Flutter com validadores e máscaras de entrada para documentos e dados brasileiros.
Instalação
dependencies:
br_validators: ^3.1.0
flutter pub get
Uso
import 'package:br_validators/br_validators.dart';
Validadores
CPF
BRValidators.validateCPF('123.456.789-09'); // true
BRValidators.validateCPF('111.111.111-11'); // false — sequência repetida
CNPJ (alfanumérico — IN RFB 2.229/2024)
Aceita CNPJ numérico clássico e o novo formato alfanumérico onde as 12 posições base admitem letras A–Z.
BRValidators.validateCNPJ('11.222.333/0001-81'); // true
BRValidators.validateCNPJ('12.ABC.345/0001-88'); // true — alfanumérico
PIS/PASEP
BRValidators.validatePISPASEP('123.45678.90-1'); // true
CEP
BRValidators.validateCEP('01310-100'); // true
Telefone fixo
BRValidators.validateLandlinePhone('(11) 3456-7890'); // true
Celular
BRValidators.validateMobileNumber('(11) 91234-5678'); // true
Telefone genérico (fixo ou celular)
BRValidators.validatePhoneNumber('(11) 91234-5678'); // true
CNH
BRValidators.validateCNH('12345678909'); // true
BRValidators.validateCNH('00000000000'); // false — sequência repetida
Chave PIX
Aceita CPF, CNPJ, e-mail, telefone (+55 seguido de 10 ou 11 dígitos) e chave aleatória (UUID v4).
BRValidators.validatePixKey('123.456.789-09'); // CPF
BRValidators.validatePixKey('user@email.com'); // e-mail
BRValidators.validatePixKey('+5511999999999'); // celular
BRValidators.validatePixKey('550e8400-e29b-41d4-a716-446655440000'); // UUID v4
Placa veicular
Aceita formato legado (ABC-1234) e Mercosul (ABC1D23).
BRValidators.validateVehiclePlate('ABC-1234'); // true — legado
BRValidators.validateVehiclePlate('ABC1D23'); // true — Mercosul
RENAVAM
Aceita 9 ou 11 dígitos (com ou sem prefixo de 2 dígitos).
BRValidators.validateRENAVAM('123456789'); // 9 dígitos
BRValidators.validateRENAVAM('00123456789'); // 11 dígitos
Inscrição Estadual (IE)
Valida a IE de qualquer um dos 27 estados + DF com o algoritmo de dígito verificador específico de cada UF.
BRValidators.validateIE('062.307.904.0081', 'MG'); // true
BRValidators.validateIE('110.042.490.114', 'SP'); // true
BRValidators.validateIE('12345678', 'RJ'); // false
Título de Eleitor
BRValidators.validateTituloEleitor('180042490607'); // true
BRValidators.validateTituloEleitor('000000000000'); // false
IBAN Brasil
Formato: BRkk BBBBB SSSSS CCCCCCCCCC T N (29 caracteres sem espaços).
Valida via algoritmo ISO 13616 (mod 97).
BRValidators.validateIBAN('BR1500000000000010932840814P2'); // true
BRValidators.validateIBAN('BR61 00360305 00001U2550014P4'); // true — espaços ignorados
Passaporte brasileiro
Formato: 2 letras seguidas de 6 dígitos.
BRValidators.validatePassport('AA123456'); // true
BRValidators.validatePassport('ab654321'); // true — aceita minúsculas
UF
BRValidators.validateUF('SP'); // true
BRValidators.validateUF('sp'); // true — case-insensitive
BRValidators.validateUF('XX'); // false
NUP (Número Único de Protocolo)
Formato: OOOOO.SSSSSS/AAAA-DD — validado com módulo 11.
BRValidators.validateNUP('00000.000001/2023-05'); // true
BRValidators.validateNUP('00000000012023-05'); // true — sem formatação
Máscaras
As máscaras são TextInputFormatter prontos para usar em TextField.
| Máscara | Atributo | Formato |
|---|---|---|
| CPF | BRMasks.cpf |
###.###.###-## |
| CNPJ | BRMasks.cnpj |
@@.@@@.@@@/@@@@-## |
| CEP | BRMasks.cep |
#####-### |
| CNH | BRMasks.cnh |
########### |
| Celular | BRMasks.mobilePhone |
(##) #####-#### |
| Telefone fixo | BRMasks.landlinePhone |
(##) ####-#### |
| PIS/PASEP | BRMasks.pisPasep |
###.#####.##-# |
| Data | BRMasks.date |
##/##/#### |
| Placa legado | BRMasks.vehiclePlateLegacy |
@@@-#### |
| Placa Mercosul | BRMasks.vehiclePlateMercosul |
@@@#@## |
| RENAVAM | BRMasks.renavam |
########### |
| IE genérica | BRMasks.ie |
###.###.###.### |
| Título de Eleitor | BRMasks.tituloEleitor |
#### #### #### |
| IBAN | BRMasks.iban |
BR## ##### ##### ##########@# |
| Passaporte | BRMasks.passport |
@@###### |
| NUP | BRMasks.nup |
#####.######/####-## |
#aceita apenas dígitos[0-9].@aceita letras e dígitos[A-Za-z0-9].
Exemplo de uso com TextField
TextField(
inputFormatters: [BRMasks.cpf],
decoration: const InputDecoration(labelText: 'CPF'),
),
TextField(
inputFormatters: [BRMasks.cnpj],
decoration: const InputDecoration(labelText: 'CNPJ'),
),
Contribuindo
Contribuições são bem-vindas! Abra uma issue ou PR no repositório GitHub.
Licença
MIT — consulte o arquivo LICENSE.
Libraries
- br_validators
- masks/br_masks
- validators/br_validators
- Library containing validators for Brazilian documents.