Offset getOffsetForCaret(TextPosition position, Rect caretPrototype)

Returns the offset at which to paint the caret.

Valid only after layout has been called.

Source

Offset getOffsetForCaret(TextPosition position, Rect caretPrototype) {
  assert(!_needsLayout);
  int offset = position.offset;
  // TODO(abarth): Handle the directionality of the text painter itself.
  const Offset emptyOffset = Offset.zero;
  switch (position.affinity) {
    case TextAffinity.upstream:
      return _getOffsetFromUpstream(offset, caretPrototype)
          ?? _getOffsetFromDownstream(offset, caretPrototype)
          ?? emptyOffset;
    case TextAffinity.downstream:
      return _getOffsetFromDownstream(offset, caretPrototype)
          ?? _getOffsetFromUpstream(offset, caretPrototype)
          ?? emptyOffset;
  }
  assert(position.affinity != null);
  return null;
}