handleCursorMovement method

void handleCursorMovement(
  1. LogicalKeyboardKey key,
  2. bool wordModifier,
  3. bool lineModifier,
  4. bool shift,
)

Implementation

void handleCursorMovement(
  LogicalKeyboardKey key,
  bool wordModifier,
  bool lineModifier,
  bool shift,
) {
  if (wordModifier && lineModifier) {
    // If both modifiers are down, nothing happens on any of the platforms.
    return;
  }
  final selection = widget.controller.selection;

  var newSelection = widget.controller.selection;

  final plainText = getTextEditingValue().text;

  final rightKey = key == LogicalKeyboardKey.arrowRight,
      leftKey = key == LogicalKeyboardKey.arrowLeft,
      upKey = key == LogicalKeyboardKey.arrowUp,
      downKey = key == LogicalKeyboardKey.arrowDown;

  if ((rightKey || leftKey) && !(rightKey && leftKey)) {
    newSelection = _jumpToBeginOrEndOfWord(newSelection, wordModifier,
        leftKey, rightKey, plainText, lineModifier, shift);
  }

  if (downKey || upKey) {
    newSelection = _handleMovingCursorVertically(
        upKey, downKey, shift, selection, newSelection, plainText);
  }

  if (!shift) {
    newSelection =
        _placeCollapsedSelection(selection, newSelection, leftKey, rightKey);
  }

  widget.controller.updateSelection(newSelection, ChangeSource.LOCAL);
}