delete method
void
delete(
- int start,
- int end
)
Implementation
void delete(int start, int end) {
if (start < 0 || end < start || end > _length) {
throw RangeError('Invalid range: [$start, $end) for length $_length');
}
if (start == end) return;
_lineCache = null;
if (end - start == 1 && _root != null) {
final deleted = _tryDeleteInLeaf(_root!, start);
if (deleted != null) {
_root = deleted.length == 0 ? null : deleted;
_length -= 1;
return;
}
}
final first = _split(_root, start);
final second = _split(first.right, end - start);
_root = _concat(first.left, second.right);
_length -= (end - start);
}