Added Uuid generator class
Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
parent
e4c0a50ece
commit
5d9f665426
26
lib/uuid.dart
Normal file
26
lib/uuid.dart
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import 'dart:math';
|
||||||
|
|
||||||
|
class Uuid {
|
||||||
|
final Random _random = Random();
|
||||||
|
|
||||||
|
/// Generate a version 4 (random) uuid. This is a uuid scheme that only uses
|
||||||
|
/// random numbers as the source of the generated uuid.
|
||||||
|
String generateV4() {
|
||||||
|
// Generate xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx / 8-4-4-4-12.
|
||||||
|
final special = 8 + _random.nextInt(4);
|
||||||
|
|
||||||
|
return '${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}-'
|
||||||
|
'${_bitsDigits(16, 4)}-'
|
||||||
|
'4${_bitsDigits(12, 3)}-'
|
||||||
|
'${_printDigits(special, 1)}${_bitsDigits(12, 3)}-'
|
||||||
|
'${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}${_bitsDigits(16, 4)}';
|
||||||
|
}
|
||||||
|
|
||||||
|
String _bitsDigits(int bitCount, int digitCount) =>
|
||||||
|
_printDigits(_generateBits(bitCount), digitCount);
|
||||||
|
|
||||||
|
int _generateBits(int bitCount) => _random.nextInt(1 << bitCount);
|
||||||
|
|
||||||
|
String _printDigits(int value, int count) =>
|
||||||
|
value.toRadixString(16).padLeft(count, '0');
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user