validarCNPJ static method

bool validarCNPJ(
  1. dynamic numero
)

Implementation

static bool validarCNPJ(dynamic numero) {
  try {
    var text = "$numero".removeAny(["-", "/", "."]);

    if (numero is num) {
      text = numero.floor().toString().padLeft(14, "0");
    }

    if (text.isNotNumber || text.length != 14) {
      return false;
    }

    // Calcula o primeiro dígito verificador do CNPJ
    List<int> multiplicadores = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
    int soma = 0;
    for (int i = 0; i < 12; i++) {
      soma += int.parse(text[i]) * multiplicadores[i];
    }
    int primeiroDigito = (soma % 11 < 2) ? 0 : 11 - (soma % 11);

    if (primeiroDigito != int.parse(text[12])) {
      return false;
    }

    // Calcula o segundo dígito verificador do CNPJ
    multiplicadores = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
    soma = 0;
    for (int i = 0; i < 13; i++) {
      soma += int.parse(text[i]) * multiplicadores[i];
    }
    int segundoDigito = (soma % 11 < 2) ? 0 : 11 - (soma % 11);

    return segundoDigito == int.parse(text[13]);
  } catch (e) {
    return false;
  }
}