readLine method

  1. @override
String? readLine()
override

Reads a line of input (blocking).

Returns null on EOF.

Implementation

@override
String? readLine() {
  // Best-effort, blocking line read from the tty.
  try {
    while (true) {
      final b = readByte();
      if (b < 0) {
        if (_lineBuf.isEmpty) return null;
        final s = io.systemEncoding.decode(_lineBuf);
        _lineBuf.clear();
        return s;
      }
      if (b == 0x0a /* \\n */ ) {
        final s = io.systemEncoding.decode(_lineBuf);
        _lineBuf.clear();
        return s;
      }
      if (b != 0x0d /* \\r */ ) _lineBuf.add(b);
    }
  } catch (_) {
    return null;
  }
}