getDragGridSize function

Size getDragGridSize({
  1. required int total,
  2. required Size viewSize,
  3. required double childAspectRatio,
  4. required double crossAxisSpacing,
  5. required double mainAxisSpacing,
  6. required int crossCount,
  7. required Axis direction,
})

Computing Drag Grid Size

Implementation

Size getDragGridSize({
  required int total,
  required Size viewSize,
  required double childAspectRatio,
  required double crossAxisSpacing,
  required double mainAxisSpacing,
  required int crossCount,
  required Axis direction,
}) {
  int line = 1;
  double width = 0.0;
  double height = 0.0;
  double ctxWidth = viewSize.width;
  double ctxHeight = viewSize.height;

  line = (total ~/ crossCount);
  line += (total % crossCount > 0 ? 1 : 0);

  if (direction == Axis.vertical) {
    width = (ctxWidth - crossAxisSpacing * (crossCount - 1)) / crossCount;
    height = width / childAspectRatio * line + mainAxisSpacing * (line - 1);
    return Size(ctxWidth, height);
  }

  if (direction == Axis.horizontal) {
    height = (ctxHeight - crossAxisSpacing * (crossCount - 1)) / crossCount;
    width = height / childAspectRatio * line + mainAxisSpacing * (line - 1);
    return Size(width, ctxHeight);
  }

  return Size.zero;
}