String readString(int length) { final bytes = Uint8List.sublistView(_data, _offset, _offset + length); _offset += length; return utf8.decode(bytes, allowMalformed: true); }