generateFrom method

  1. @override
String generateFrom(
  1. List<int> numbers
)
override

This method generates a valid CPF from a given list of integers, which is returned as a String

Usage:

final cpf = CPFUtil();
// This will generate a valid CPF from a given list of integers
print(cpf.generateFrom([1, 2, 3])); // -> '123.356.111-19'

You can check the state of a CPF by looking at the last number before the two verifiers digits.

All the information about the generation and the states number can be obtained here:

https://pt.wikipedia.org/wiki/Cadastro_de_Pessoas_F%C3%ADsicas

Implementation

@override
String generateFrom(List<int> numbers) {
  if (numbers.isEmpty) return generate();

  late List<int> cpf;

  if (numbers.length >= 9) {
    cpf = numbers.sublist(0, 9).toList();
  } else {
    cpf = numbers.toList();
    cpf.addAll(
      List<int>.generate(
        9 - numbers.length,
        (index) => random.nextInt(9),
        growable: true,
      ),
    );
  }

  cpf.insert(9, _calculateVerifyingDigit(cpf));
  cpf.insert(10, _calculateVerifyingDigit(cpf));

  return format(cpf
      .map<String>((elements) => elements.toString())
      .reduce((a, b) => a += b));
}