uuidv4 function

String uuidv4([
  1. Random? random
])

Generate an RFC 4122 v4 UUID.

Implementation

String uuidv4([Random? random]) {
  final rng = random ?? _rng();
  final bytes = List<int>.generate(16, (_) => rng.nextInt(256));

  // Per RFC 4122 ยง4.4: set version (4) and variant (10xx) bits.
  bytes[6] = (bytes[6] & 0x0f) | 0x40;
  bytes[8] = (bytes[8] & 0x3f) | 0x80;

  String hex(int b) => b.toRadixString(16).padLeft(2, '0');

  final b = bytes.map(hex).toList();
  return '${b[0]}${b[1]}${b[2]}${b[3]}-'
      '${b[4]}${b[5]}-'
      '${b[6]}${b[7]}-'
      '${b[8]}${b[9]}-'
      '${b[10]}${b[11]}${b[12]}${b[13]}${b[14]}${b[15]}';
}