getPercentOffset static method

Offset? getPercentOffset(
  1. RenderBox? droppedOn,
  2. Offset? droppedAt
)

Implementation

static Offset? getPercentOffset(RenderBox? droppedOn, Offset? droppedAt) {
  if (droppedOn == null || droppedAt == null) return null;

  final offset = droppedOn.localToGlobal(Offset.zero);

  final center = Offset(droppedOn.size.width / 2 + offset.dx,
      droppedOn.size.height / 2 + offset.dy);

  // dx is +/- percent offset from center
  // dx = offset (droppedAt) - offset (center) / (width (droppedOn) / 2)
  final dx = ((droppedAt.dx - center.dx) / (droppedOn.size.width / 2)) * 100;

  // dy is +/- percent offset from center
  // dy = offset (droppedAt) - offset (center) / (width (droppedOn) / 2)
  final dy = ((droppedAt.dy - center.dy) / (droppedOn.size.height / 2)) * 100;

  return Offset(dx, dy);
}