moveScrollByColumn method
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);
}