handleDragUpdate method

void handleDragUpdate(
  1. DragUpdateDetails details
)

Implementation

void handleDragUpdate(DragUpdateDetails details) {
  final dx = details.delta.dx;
  final newPosition = scrollPosition + dx;

  if (newPosition <= 0 && dx <= 0) return;

  if (newPosition + widget.scrollWidth >= widget.constraints.width &&
      dx >= 0) {
    jumpToScrollPosition(scrollPosition);
    return;
  }

  if (newPosition < 0) {
    jumpToScrollPosition(0);
    return;
  }

  if (newPosition + widget.scrollWidth > widget.constraints.width) {
    jumpToScrollPosition(widget.constraints.width - widget.scrollWidth);
    return;
  }

  jumpToScrollPosition(newPosition);
}