delete method

void delete(
  1. int start,
  2. 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);
}