delete method
Deletes len characters starting from the specified index.
Example:
final text = EasyText.fromStr(text: 'Hello Beautiful World');
text.delete(6, 10); // Result: 'Hello World'
text.delete(0, 5); // Result: 'World'
Implementation
EasyTextChange delete(
int index,
int len, {
bool ignoreMerge = false,
}) {
final EasyTextList oldValues = owner!.query(index, len);
final int length = this.length;
assert(index < length, 'offset must be less than the length passed');
final int local = math.min<int>(length - index, len);
final EasyText extracted = extractAt(index, local);
final EasyText? prev = extracted.previous;
final EasyText? next = extracted.next;
extracted.unlink();
final int remain = len - local;
if (remain > 0 && next != null) {
next.delete(0, remain);
}
if (prev != null && !ignoreMerge) prev.tryMerge();
return EasyTextChange(
start: index,
length: len,
delta: Delta()
..retain(index)
..delete(length),
inverted: Delta()
..retain(index)
// since .invert method does not use inserted
// text in the delta, we will need to a simple trick
..compose(
Delta.fromOperations(
<Operation>[...oldValues.toDelta().operations],
),
),
);
}