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) {
  // 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;
}