isValid static method
Implementation
static bool isValid(String? cnpj) {
if (cnpj == null) return false;
// Obter somente os números do CNPJ
var numeros = cnpj.replaceAll(RegExp(r'[^0-9]'), '');
// Testar se o CNPJ possui 14 dígitos
if (numeros.length != 14) return false;
// Testar se todos os dígitos do CNPJ são iguais
if (RegExp(r'^(\d)\1*$').hasMatch(numeros)) return false;
// Dividir dígitos
List<int> digitos =
numeros.split('').map((String d) => int.parse(d)).toList();
// Calcular o primeiro dígito verificador
var calcDv1 = 0;
var j = 0;
for (var i in Iterable<int>.generate(12, (i) => i < 4 ? 5 - i : 13 - i)) {
calcDv1 += digitos[j++] * i;
}
calcDv1 %= 11;
var dv1 = calcDv1 < 2 ? 0 : 11 - calcDv1;
// Testar o primeiro dígito verificado
if (digitos[12] != dv1) return false;
// Calcular o segundo dígito verificador
var calcDv2 = 0;
j = 0;
for (var i in Iterable<int>.generate(13, (i) => i < 5 ? 6 - i : 14 - i)) {
calcDv2 += digitos[j++] * i;
}
calcDv2 %= 11;
var dv2 = calcDv2 < 2 ? 0 : 11 - calcDv2;
// Testar o segundo dígito verificador
if (digitos[13] != dv2) return false;
return true;
}