asStringFrom method
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;
}