selectLastLines static method

void selectLastLines(
  1. TextEditingController textEditingController, {
  2. int offset = 1,
})

Attempts to select the last N lines starting from the current caret position.

Implementation

static void selectLastLines(TextEditingController textEditingController,
    {int offset = 1}) {
  if (offset < 1) {
    return;
  }
  final caretPosition = textEditingController.selection.start;
  final rightToCaret = textEditingController.text.substring(caretPosition);

  final textUntilNextDelimiter =
      textEditingController.text.substring(0, caretPosition) +
          rightToCaret.split("\n").first;

  final selectedLines =
      textUntilNextDelimiter.split("\n").reversed.take(offset);

  final int totalCharacters =
      selectedLines.join().length + selectedLines.length - 1;

  textEditingController.selection = TextSelection(
      baseOffset: textUntilNextDelimiter.length - totalCharacters,
      extentOffset: textUntilNextDelimiter.length);
}