Blob constructor
Implementation
factory Blob(List blobParts, [String? type, String? encoding]) {
for (var i = 0; i < blobParts.length; i++) {
final part = blobParts[i];
if (part is String && i + 1 < blobParts.length) {
blobParts[i] = '$part\x00';
}
}
var parts = List<List<int>>.from(
blobParts.map((part) {
if (part is String) {
return utf8.encode(part);
}
if (part is _Blob) {
return part._data;
}
if (part is TypedData) {
return Uint8List.view(
part.buffer,
part.offsetInBytes,
part.lengthInBytes,
);
}
if (part is ByteBuffer) {
return part.asUint8List();
}
if (part is List<int>) {
return part;
}
throw ArgumentError('Encountered an invalid blob part');
}),
);
var n = 0;
for (var part in parts) {
n += part.length;
}
final result = Uint8List(n);
var i = 0;
for (var part in parts) {
result.setAll(i, part);
i += part.length;
}
return _Blob(result, type: type ?? '');
}