toBinaryContent method

Future<Uint8List?> toBinaryContent()

Implementation

Future<Uint8List?> toBinaryContent() async {
  if (!await _exists) {
    return null;
  }

  // Update last-used timestamp and persist on throttle when binary content is read
  _touchLastUsedAndMaybePersist();

  // Open read.
  Stream<List<int>> blobStream = _blob.openRead();

  // Consume stream.
  Completer<Uint8List> completer = Completer<Uint8List>();
  ByteConversionSink sink = ByteConversionSink.withCallback((bytes) => completer.complete(Uint8List.fromList(bytes)));
  blobStream.listen(sink.add, onError: completer.completeError, onDone: sink.close, cancelOnError: true);

  return completer.future;
}