isValidCPF static method

bool isValidCPF(
  1. String cpf
)

Implementation

static bool isValidCPF(String cpf) {
  // Remove caracteres especiais
  cpf = cpf.replaceAll(RegExp(r'[^0-9]'), '');

  // Verifica se o CPF tem 11 dígitos e não é uma sequência de números iguais
  if (cpf.length != 11 || RegExp(r'^(\d)\1*$').hasMatch(cpf)) {
    return false;
  }

  // Calcula o primeiro dígito verificador
  int sum = 0;
  for (int i = 0; i < 9; i++) {
    sum += int.parse(cpf[i]) * (10 - i);
  }
  int firstCheckDigit = (sum * 10) % 11;
  if (firstCheckDigit == 10) firstCheckDigit = 0;

  if (firstCheckDigit != int.parse(cpf[9])) {
    return false;
  }

  // Calcula o segundo dígito verificador
  sum = 0;
  for (int i = 0; i < 10; i++) {
    sum += int.parse(cpf[i]) * (11 - i);
  }
  int secondCheckDigit = (sum * 10) % 11;
  if (secondCheckDigit == 10) secondCheckDigit = 0;

  if (secondCheckDigit != int.parse(cpf[10])) {
    return false;
  }

  return true;
}