Uuid constructor Null safety

Uuid(
  1. {Map<String, dynamic>? options}
)

Implementation

Uuid({Map<String, dynamic>? options}) {
  options ??= const {};

  // Sets initial seedBytes, node, and clock seq based on mathRNG.
  var v1PositionalArgs = (options['v1rngPositionalArgs'] != null)
      ? options['v1rngPositionalArgs']
      : [];
  var v1NamedArgs = (options['v1rngNamedArgs'] != null)
      ? options['v1rngNamedArgs'] as Map<Symbol, dynamic>
      : const <Symbol, dynamic>{};
  _seedBytes = (options['v1rng'] != null)
      ? Function.apply(options['v1rng'], v1PositionalArgs, v1NamedArgs)
      : UuidUtil.mathRNG();

  // Set the globalRNG function to mathRNG with the option to set an alternative globally
  var gPositionalArgs = (options['grngPositionalArgs'] != null)
      ? options['grngPositionalArgs']
      : [];
  var gNamedArgs = (options['grngNamedArgs'] != null)
      ? options['grngNamedArgs'] as Map<Symbol, dynamic>
      : const <Symbol, dynamic>{};

  final grng = options['grng'];
  _globalRNG = (grng != null)
      ? () => Function.apply(grng, gPositionalArgs, gNamedArgs)
      : UuidUtil.mathRNG;

  // Per 4.5, create a 48-bit node id (47 random bits + multicast bit = 1)
  _nodeId = [
    _seedBytes[0] | 0x01,
    _seedBytes[1],
    _seedBytes[2],
    _seedBytes[3],
    _seedBytes[4],
    _seedBytes[5]
  ];

  // Per 4.2.2, randomize (14 bit) clockseq
  _clockSeq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3ffff;
}