read method
Reads data from the stream
Implementation
@override
Future<Uint8List> read([int? maxLength]) async {
// First, serve the prepended data
if (!_prependedConsumed) {
final remaining = _prependedData.length - _prependedOffset;
if (remaining > 0) {
final toRead = maxLength != null
? (maxLength < remaining ? maxLength : remaining)
: remaining;
final result = Uint8List.view(
_prependedData.buffer,
_prependedData.offsetInBytes + _prependedOffset,
toRead,
);
_prependedOffset += toRead;
if (_prependedOffset >= _prependedData.length) {
_prependedConsumed = true;
}
return result;
}
_prependedConsumed = true;
}
// Then read from underlying stream
return _underlying.read(maxLength);
}