diff --git a/lib/src/utils/random_access_stream.dart b/lib/src/utils/random_access_stream.dart index 7e5fedb..67f0e9b 100644 --- a/lib/src/utils/random_access_stream.dart +++ b/lib/src/utils/random_access_stream.dart @@ -41,6 +41,12 @@ abstract class RandomAccessStream { return line.toString(); } else if (c != 0x0D) { line.writeCharCode(c); + } else if (c == 0x0D) { + final next = await peekByte(); + if (next == 0x0A) { + await readByte(); + } + return line.toString(); } } } diff --git a/test/utils/stream_test.dart b/test/utils/stream_test.dart index bd1a29e..d801f30 100644 --- a/test/utils/stream_test.dart +++ b/test/utils/stream_test.dart @@ -33,6 +33,12 @@ void main() { expect(await stream.readLine(), '456'); expect(await stream.readLine(), '789'); }); + test('Test read line multiple', () async { + final stream = ByteStream(utf8.encode('123\r\n456\r789')); + expect(await stream.readLine(), '123'); + expect(await stream.readLine(), '456'); + expect(await stream.readLine(), '789'); + }); }); }