handlePanUpdate method
Is called when a pan gesture is updated.
See also:
- GestureDetector.onPanUpdate, which this method is passed to
Implementation
void handlePanUpdate(DragUpdateDetails details) {
final center = Offset(
size.width / 2,
_math.min(size.width, size.height) / 2,
);
final onTop = details.localPosition.dy <= center.dy;
final onLeftSide = details.localPosition.dx <= center.dx;
final onRightSide = !onLeftSide;
final onBottom = !onTop;
final panUp = details.delta.dy <= 0.0;
final panLeft = details.delta.dx <= 0.0;
final panRight = !panLeft;
final panDown = !panUp;
final yChange = details.delta.dy.abs();
final xChange = details.delta.dx.abs();
final verticalRotation = (onRightSide && panDown) || (onLeftSide && panUp)
? yChange
: yChange * -1;
final horizontalRotation =
(onTop && panRight) || (onBottom && panLeft) ? xChange : xChange * -1;
final rotationalChange = verticalRotation + horizontalRotation;
value = value.copyWith(distance: value.distance + rotationalChange);
}