read method
Implementation
@override
Future<Uint8List> read(int offset, int count) async {
final int safe = clampCount(offset, count);
if (safe == 0) return Uint8List(0);
if (safe > uDocBlockSize * 8) return inner.read(offset, safe);
final Uint8List? hit = peek(offset, safe);
if (hit != null) return hit;
final int first = offset ~/ uDocBlockSize;
final int last = (offset + safe - 1) ~/ uDocBlockSize;
final Uint8List out = Uint8List(safe);
int written = 0;
for (int index = first; index <= last; index++) {
final Uint8List block = await _block(index);
final int blockStart = index * uDocBlockSize;
final int from = offset > blockStart ? offset - blockStart : 0;
final int to = (offset + safe) < (blockStart + block.length) ? offset + safe - blockStart : block.length;
if (to <= from) break;
out.setRange(written, written + (to - from), block, from);
written += to - from;
}
return written == safe ? out : Uint8List.sublistView(out, 0, written);
}