Uuid.parse constructor

Uuid.parse(
  1. String string
)

Implementation

factory Uuid.parse(String string) {
  final data = Uint8List(16);

  var byteOffset = 0;
  for (var substringStart = 0; substringStart < string.length;) {
    if (string[substringStart] == "-") {
      substringStart += 1;
      continue;
    }

    if (byteOffset >= 16 || substringStart + 2 > string.length) {
      throw _UuidParseFailure(string);
    }

    final byte = int.tryParse(
      string.substring(substringStart, substringStart + 2),
      radix: 16,
    );
    if (byte == null) throw _UuidParseFailure(string);

    data[byteOffset] = byte;

    byteOffset += 1;
    substringStart += 2;
  }
  if (byteOffset == 2 || byteOffset == 4 || byteOffset == 16) {
    return Uuid(data.buffer.asUint8List(0, byteOffset));
  } else {
    throw _UuidParseFailure(string);
  }
}