getLayout method
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));
}