read method
Reads from the underlying input stream if not null.
Implementation
@override
int read(Int8List? buffer, int? offset, int? length) {
offset ??= 0;
length ??= 0;
if (buffer == null) {
throw ArgumentError.notNull("buffer");
}
if (offset + length > buffer.length) {
throw ArgumentError("The range exceeds the buffer length");
}
if (_readIterator == null || length <= 0) {
return 0;
}
int i = 0;
while (i < length && (_readIterator?.moveNext() ?? false)) {
buffer[offset + i] = (_readIterator?.current ?? 0);
i++;
}
// cleanup iterator when we've reached the end
if (_readIterator?.current == null) {
_readIterator = null;
}
return i;
}