positionAt method
Converts a UTF-16 offset into a Position.
Implementation
Position positionAt(int offset) {
if (offset <= 0) return const Position(0, 0);
if (offset > text.length) offset = text.length;
// Binary search for the greatest line start <= offset.
var lo = 0, hi = _lineStarts.length - 1;
while (lo < hi) {
final mid = (lo + hi + 1) >> 1;
if (_lineStarts[mid] <= offset) {
lo = mid;
} else {
hi = mid - 1;
}
}
return Position(lo, offset - _lineStarts[lo]);
}