Uuid constructor Null safety
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;
}