generateFrom method
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));
}