getAnimationGridItemOffset function

Offset getAnimationGridItemOffset({
  1. required double crossAxisSpacing,
  2. required double mainAxisSpacing,
  3. required Axis direction,
  4. required int crossCount,
  5. required Size itemSize,
  6. required int from,
  7. required int end,
})

Computing GridItem Offset (from -> end)

Implementation

Offset getAnimationGridItemOffset({
  required double crossAxisSpacing,
  required double mainAxisSpacing,
  required Axis direction,
  required int crossCount,
  required Size itemSize,
  required int from,
  required int end,
}) {
  int sx = 0;
  int ex = 0;
  int sy = 0;
  int ey = 0;

  double kw = 1.0;
  double kh = 1.0;

  if (direction == Axis.vertical) {
    sx = from % crossCount;
    ex = end % crossCount;
    sy = from ~/ crossCount;
    ey = end ~/ crossCount;

    kw = (itemSize.width + crossAxisSpacing) / itemSize.width;
    kh = (itemSize.height + mainAxisSpacing) / itemSize.height;
  }

  if (direction == Axis.horizontal) {
    sx = from ~/ crossCount;
    ex = end ~/ crossCount;
    sy = from % crossCount;
    ey = end % crossCount;

    kw = (itemSize.width + mainAxisSpacing) / itemSize.width;
    kh = (itemSize.height + crossAxisSpacing) / itemSize.height;
  }

  return Offset(
    (sx - ex).toDouble() * kw,
    (sy - ey).toDouble() * kh,
  );
}