Uuid.fromString constructor
Uuid.fromString(
- String uuidString
Creates a UUID from a string representation.
Parameters:
uuidString
: String representation of the UUID
Accepts standard UUID format with hyphens (8-4-4-4-12) or without hyphens. Parsing is case-insensitive but output is always lowercase.
Supported Formats
550e8400-e29b-41d4-a716-446655440000
(standard format)550e8400e29b41d4a716446655440000
(compact format)- Mixed case variations
Example
final uuid1 = Uuid.fromString('550e8400-e29b-41d4-a716-446655440000');
final uuid2 = Uuid.fromString('550E8400E29B41D4A716446655440000');
print(uuid1 == uuid2); // true
Throws:
- InvalidFormatException if the string is not a valid UUID format
Implementation
factory Uuid.fromString(String uuidString) {
if (uuidString.isEmpty) {
throw InvalidFormatException('UUID string cannot be empty');
}
// Remove hyphens and convert to lowercase
final cleanString = uuidString.replaceAll('-', '').toLowerCase();
if (cleanString.length != 32) {
throw InvalidFormatException('Invalid UUID string length: ${uuidString.length}');
}
// Validate hex characters
if (!RegExp(r'^[0-9a-f]{32}$').hasMatch(cleanString)) {
throw InvalidFormatException('Invalid UUID string format: $uuidString');
}
try {
final mostSigBits = BigInt.parse(cleanString.substring(0, 16), radix: 16);
final leastSigBits = BigInt.parse(cleanString.substring(16, 32), radix: 16);
return Uuid._(BigInteger.fromBigInt(mostSigBits), BigInteger.fromBigInt(leastSigBits));
} catch (e) {
throw InvalidFormatException('Failed to parse UUID string: $uuidString\n $e');
}
}