insertText method

void insertText(
  1. String changedText,
  2. int endIndex,
  3. int length
)

根据插入后的Text 文案, segment 移位或者删除。

Implementation

void insertText(String changedText, int endIndex, int length) {
  //如果changedText为空,直接返回
  if (changedText.isEmpty) {
    return;
  }
  //@用户名中间插入文字,则需要删除此用户
  AitMsg? removedBlack;
  int start = endIndex - length;
  //移位或者删除segment
  for (var aitMsg in _aitBlocks.values) {
    for (var segment in aitMsg.segments) {
      if (start <= segment.start) {
        segment.start += length;
        segment.endIndex += length;
        continue;
      }
      if (endIndex > segment.start && endIndex <= segment.endIndex) {
        removedBlack = AitMsg(aitMsg.text);
        removedBlack.addSegment(segment.start, segment.endIndex);
        continue;
      }
    }
  }
  if (removedBlack != null) {
    _removeSegment(removedBlack, -1);
  }
}