getGridItemSize function

Size getGridItemSize({
  1. required int total,
  2. required Size gridSize,
  3. required double crossAxisSpacing,
  4. required double mainAxisSpacing,
  5. required int crossCount,
  6. required Axis direction,
})

Computing GridItem Size

Implementation

Size getGridItemSize({
  required int total,
  required Size gridSize,
  required double crossAxisSpacing,
  required double mainAxisSpacing,
  required int crossCount,
  required Axis direction,
}) {
  int line = 1;

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

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

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

  return Size.zero;
}