validarCNH static method

bool validarCNH(
  1. dynamic numero
)

Valida o número da Carteira Nacional de Habilitação (CNH).

Essa função verifica se o número da CNH é válido, seguindo as seguintes regras:

  • O número deve ter 11 dígitos.
  • O número não pode ser composto apenas por um único dígito repetido 11 vezes.

Parâmetros:

  • numero: O número da CNH a ser validado.

Retorna:

  • true se o número da CNH for válido.
  • false caso contrário.

Implementation

static bool validarCNH(dynamic numero) {
  var cnh = "$numero";

  if (cnh.isNotBlank && cnh.length == 11 && cnh != '1' * 11) {
    int dsc = 0;
    int v = 0;
    int i = 0;
    int j = 9;
    while (i < 9) {
      v += int.parse(cnh[i]) * j;
      i += 1;
      j -= 1;
    }

    int vl1 = v % 11;
    if (vl1 >= 10) {
      vl1 = 0;
      dsc = 2;
    }

    v = 0;
    i = 0;
    j = 1;
    while (i < 9) {
      v += int.parse(cnh[i]) * j;
      i += 1;
      j += 1;
    }

    int x = v % 11;
    int vl2 = x >= 10 ? 0 : x - dsc;
    return '$vl1$vl2' == cnh.substring(cnh.length - 2);
  }

  return false;
}