convertKeyboardMoveTextPostion function
Implementation
TextPosition? convertKeyboardMoveTextPostion(
InlineSpan text,
TextPosition? textPosition,
) {
if (textPosition != null) {
int caretOffset = textPosition.offset;
if (caretOffset <= 0) {
return textPosition;
}
int textOffset = 0;
text.visitChildren((InlineSpan ts) {
if (ts is SpecialInlineSpanBase) {
final SpecialInlineSpanBase specialTs = ts as SpecialInlineSpanBase;
final int length = specialTs.actualText.length;
textOffset += length;
///make sure caret is not in text when deleteAll is true
if (specialTs.deleteAll &&
caretOffset >= specialTs.start &&
caretOffset <= specialTs.end) {
if (caretOffset == specialTs.start || caretOffset == specialTs.end) {
return false;
} else if (caretOffset == specialTs.start + 1) {
caretOffset = specialTs.end;
} else if (caretOffset == specialTs.end - 1) {
caretOffset = specialTs.start;
}
return false;
}
} else {
textOffset += getInlineOffset(ts);
}
if (textOffset >= textPosition.offset) {
return false;
}
return true;
});
if (caretOffset != textPosition.offset) {
return TextPosition(offset: caretOffset, affinity: textPosition.affinity);
}
}
return textPosition;
}