insertText method
根据插入后的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);
}
}