generate method
Generate a valid Thai ID.
firstDigit: optionally constrain the first digit (0-9).formatted: if true, returns usingpattern/delimiter.
Implementation
String generate(
{int? firstDigit,
bool formatted = false,
String pattern = 'x-xxxx-xxxxx-xx-x',
String delimiter = '-'}) {
final rand = Random();
final digits = List<int>.filled(13, 0);
for (var i = 0; i < 12; i++) {
digits[i] = rand.nextInt(10);
}
if (firstDigit != null) {
if (firstDigit < 0 || firstDigit > 9) {
throw ArgumentError('firstDigit must be 0-9');
}
digits[0] = firstDigit;
}
// compute checksum
final first12 = digits.take(12).join();
digits[12] = checksum(first12);
final raw = digits.join();
if (!formatted) return raw;
return format(raw, pattern: pattern, delimiter: delimiter);
}