applyInsertion method

void applyInsertion({
  1. required int offset,
  2. required String text,
})

Implementation

void applyInsertion({required int offset, required String text}) {
  final insertOffset = offset.clamp(0, 1 << 30);
  final length = text.characters.length;
  if (length <= 0) {
    return;
  }

  for (final entry in _extmarks.entries.toList(growable: false)) {
    final extmark = entry.value;
    if (extmark.startOffset >= insertOffset) {
      _extmarks[entry.key] = TextExtmark(
        id: extmark.id,
        type: extmark.type,
        startOffset: extmark.startOffset + length,
        endOffset: extmark.endOffset + length,
        virtual: extmark.virtual,
        styleKey: extmark.styleKey,
        priority: extmark.priority,
        data: extmark.data,
      );
    } else if (extmark.endOffset > insertOffset) {
      _extmarks[entry.key] = TextExtmark(
        id: extmark.id,
        type: extmark.type,
        startOffset: extmark.startOffset,
        endOffset: extmark.endOffset + length,
        virtual: extmark.virtual,
        styleKey: extmark.styleKey,
        priority: extmark.priority,
        data: extmark.data,
      );
    }
  }
}