getLeadingTextBoundaryAt method

  1. @override
int? getLeadingTextBoundaryAt(
  1. int position
)
override

Returns the int representing the start position of the paragraph that bounds the given position. The returned int is the position of the code unit that follows the line terminator that encloses the desired paragraph.

Implementation

@override
int? getLeadingTextBoundaryAt(int position) {
  if (position < 0 || _text.isEmpty) {
    return null;
  }

  if (position >= _text.length) {
    return _text.length;
  }

  if (position == 0) {
    return 0;
  }

  int index = position;

  if (index > 1 && _text.codeUnitAt(index) == 0x0A && _text.codeUnitAt(index - 1) == 0x0D) {
    index -= 2;
  } else if (TextLayoutMetrics.isLineTerminator(_text.codeUnitAt(index))) {
    index -= 1;
  }

  while (index > 0) {
    if (TextLayoutMetrics.isLineTerminator(_text.codeUnitAt(index))) {
      return index + 1;
    }
    index -= 1;
  }

  return max(index, 0);
}