getLayout method

  1. @override
SliverGridLayout getLayout(
  1. SliverConstraints constraints
)
override

Returns information about the size and position of the tiles in the grid.

Implementation

@override
SliverGridLayout getLayout(SliverConstraints constraints) {
  assert(_debugAssertIsValid());
  final usableCrossAxisCount = max(0.0,
      constraints.crossAxisExtent - crossAxisSpacing * (crossAxisCount - 1));

  childCrossAxisExtent = usableCrossAxisCount / crossAxisCount;
  childMainAxisExtent = childCrossAxisExtent / childAspectRatio;
  return SliverGridWithCustomGeometryLayout(
      geometryBuilder: (index, layout) {
        return SliverGridGeometry(
            scrollOffset: (index ~/ crossAxisCount) * layout.mainAxisStride,
            crossAxisOffset: _getOffsetFromStartInCrossAxis(index, layout),
            mainAxisExtent: childMainAxisExtent,
            crossAxisExtent: childCrossAxisExtent);
      },
      crossAxisCount: crossAxisCount,
      mainAxisStride: childMainAxisExtent + mainAxisSpacing,
      crossAxisStride: childCrossAxisExtent + crossAxisSpacing,
      childMainAxisExtent: childMainAxisExtent,
      childCrossAxisExtent: childCrossAxisExtent,
      reverseCrossAxis:
          axisDirectionIsReversed(constraints.crossAxisDirection));
}