moveScrollByColumn method

  1. @override
void moveScrollByColumn(
  1. PlutoMoveDirection direction,
  2. int? columnIdx
)
inherited

Scroll to columnIdx position.

Implementation

@override
void moveScrollByColumn(PlutoMoveDirection direction, int? columnIdx) {
  if (!direction.horizontal) {
    return;
  }

  final columnIndexes = columnIndexesByShowFrozen;

  final PlutoColumn columnToMove =
      refColumns[columnIndexes[columnIdx! + direction.offset]];

  if (!canHorizontalCellScrollByDirection(
    direction,
    columnToMove,
  )) {
    return;
  }

  double offsetToMove = columnToMove.startPosition;

  final double? screenOffset = showFrozenColumn == true
      ? maxWidth! - leftFrozenColumnsWidth - rightFrozenColumnsWidth
      : maxWidth;

  if (direction.isRight) {
    if (offsetToMove > scroll.horizontal!.offset) {
      offsetToMove -= screenOffset!;
      offsetToMove += columnToMove.width;
      offsetToMove += scrollOffsetByFrozenColumn;

      if (offsetToMove < scroll.horizontal!.offset) {
        return;
      }
    }
  } else {
    final offsetToNeed = offsetToMove + columnToMove.width;

    final currentOffset = screenOffset! + scroll.horizontal!.offset;

    if (offsetToNeed > currentOffset) {
      offsetToMove = scroll.horizontal!.offset + offsetToNeed - currentOffset;
      offsetToMove += scrollOffsetByFrozenColumn;
    } else if (offsetToMove > scroll.horizontal!.offset) {
      return;
    }
  }

  scrollByDirection(direction, offsetToMove);
}