getLayout method
Returns information about the size and position of the tiles in the grid.
Implementation
@override
SliverGridLayout getLayout(SliverConstraints constraints) {
// print('getLayout($constraints)');
final previous = _currentConstraints;
if (previous?.crossAxisExtent == constraints.crossAxisExtent) {
return _currentLayout!;
}
double columnWidth;
switch (parent.giphySource.type) {
case GiphyType.gifs:
columnWidth = 150;
break;
case GiphyType.stickers:
columnWidth = 100;
break;
case GiphyType.emoji:
columnWidth = 75;
break;
}
var columns = ((constraints.crossAxisExtent + parent.spacing) /
(columnWidth + parent.spacing))
.floor();
if (columns < parent.minColumns) {
columns = parent.minColumns;
}
columnWidth =
(constraints.crossAxisExtent - (columns - 1) * parent.spacing) /
columns;
final layout = FixedWidthVaryingHeightLayout(
columns, columnWidth, parent.spacing, parent.giphySource);
_currentConstraints = constraints;
_currentLayout = layout;
return layout;
}