asStringFrom method

String asStringFrom({
  1. int? entriesRealOffset,
  2. int? contentRealOffset,
})

Same as asString, but resolves entriesRealOffset and contentRealOffset.

entriesRealOffset is an offset of all past entries (will considere entriesRemoved). contentRealOffset

Implementation

String asStringFrom({int? entriesRealOffset, int? contentRealOffset}) {
  if ((entriesRealOffset == null || entriesRealOffset < 0) &&
      (contentRealOffset == null || contentRealOffset < 0)) {
    return asString;
  }

  var contentOffset = 0;
  if (contentRealOffset != null && contentRealOffset >= 0) {
    contentOffset = contentRealOffset - _contentRemoved;
  }

  String s;
  if (entriesRealOffset != null && entriesRealOffset >= 0) {
    var entriesOffset = entriesRealOffset - entriesRemoved;

    if (entriesOffset <= 0) {
      s = asString;
      if (contentOffset > 0) {
        s = s.substring(Math.min(contentOffset, s.length));
      }
    } else if (entriesOffset >= _data.length) {
      s = '';
    } else {
      var data1 = _data.sublist(0, entriesOffset);
      var prevContentSize = _computeDataContentSize(data1);
      contentOffset = Math.max(0, contentOffset - prevContentSize);

      var data2 = _data.sublist(entriesOffset);
      s = _dataToString(data2);

      if (contentOffset > 0) {
        s = s.substring(Math.min(contentOffset, s.length));
      }
    }
  } else {
    s = asString;

    if (contentOffset > 0) {
      s = s.substring(Math.min(contentOffset, s.length));
    }
  }

  return s;
}