execute method

  1. @override
void execute({
  1. required PlutoKeyManagerEvent keyEvent,
  2. required PlutoGridStateManager stateManager,
})
override

Implement actions to be mapped to shortcut keys.

Implementation

@override
void execute({
  required PlutoKeyManagerEvent keyEvent,
  required PlutoGridStateManager stateManager,
}) {
  switch (direction) {
    case PlutoMoveDirection.left:
    case PlutoMoveDirection.right:
      if (!stateManager.isPaginated) return;

      final currentColumn = stateManager.currentColumn;

      final previousPosition = stateManager.currentCellPosition;

      int toPage =
          direction.isLeft ? stateManager.page - 1 : stateManager.page + 1;

      if (toPage < 1) {
        toPage = 1;
      } else if (toPage > stateManager.totalPage) {
        toPage = stateManager.totalPage;
      }

      stateManager.setPage(toPage);

      _restoreCurrentCellPosition(
        stateManager: stateManager,
        currentColumn: currentColumn,
        previousPosition: previousPosition,
      );

      break;
    case PlutoMoveDirection.up:
    case PlutoMoveDirection.down:
      final int moveCount =
          (stateManager.rowContainerHeight / stateManager.rowTotalHeight)
              .floor();

      int rowIdx = stateManager.currentRowIdx!;

      rowIdx += direction.isUp ? -moveCount : moveCount;

      stateManager.moveCurrentCellByRowIdx(rowIdx, direction);

      break;
  }
}