isValid static method

bool isValid(
  1. String? cpf
)

Implementation

static bool isValid(String? cpf) {
  if (cpf == null) return false;

  // Obter somente os números do CPF
  var numeros = cpf.replaceAll(RegExp(r'[^0-9]'), '');

  // Testar se o CPF possui 11 dígitos
  if (numeros.length != 11) return false;

  // Testar se todos os dígitos do CPF 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;
  for (var i in Iterable<int>.generate(9, (i) => 10 - i)) {
    calcDv1 += digitos[10 - i] * i;
  }
  calcDv1 %= 11;
  var dv1 = calcDv1 < 2 ? 0 : 11 - calcDv1;

  // Testar o primeiro dígito verificado
  if (digitos[9] != dv1) return false;

  // Calcular o segundo dígito verificador
  var calcDv2 = 0;
  for (var i in Iterable<int>.generate(10, (i) => 11 - i)) {
    calcDv2 += digitos[11 - i] * i;
  }
  calcDv2 %= 11;
  var dv2 = calcDv2 < 2 ? 0 : 11 - calcDv2;

  // Testar o segundo dígito verificador
  if (digitos[10] != dv2) return false;

  return true;
}