getTextPositionBelow method
Returns the TextPosition below the given offset into the text.
If the offset is already on the last line, the offset of the last character will be returned.
Implementation
@override
TextPosition getTextPositionBelow(TextPosition position) {
final child = childAtPosition(position);
final localPosition = TextPosition(
offset: position.offset - child.container.documentOffset,
);
var newPosition = child.getPositionBelow(localPosition);
if (newPosition == null) {
// There was no text below in the current child, check the direct sibling.
final sibling = childAfter(child);
if (sibling == null) {
// reached end of the document, move to the
// last character
newPosition = TextPosition(offset: document.length - 1);
} else {
final caretOffset = child.getOffsetForCaret(localPosition);
const testPosition = TextPosition(offset: 0);
final testOffset = sibling.getOffsetForCaret(testPosition);
final finalOffset = Offset(caretOffset.dx, testOffset.dy);
final siblingPosition = sibling.getPositionForOffset(finalOffset);
newPosition = TextPosition(
offset: sibling.container.documentOffset + siblingPosition.offset,
);
}
} else {
newPosition = TextPosition(
offset: child.container.documentOffset + newPosition.offset,
);
}
return newPosition;
}