1. override
GridSpecification getGridSpecification(BoxConstraints constraints, int childCount)

Override this method to control size of the columns and rows.

Source

@override
GridSpecification getGridSpecification(BoxConstraints constraints, int childCount) {
  if (!constraints.maxWidth.isFinite) {
    // if we're unbounded, just shrink-wrap around a single line of tiles
    return new GridSpecification.fromRegularTiles(
      tileWidth: maxTileWidth,
      tileHeight: maxTileWidth / tileAspectRatio,
      columnCount: childCount,
      rowCount: 1,
      columnSpacing: columnSpacing,
      rowSpacing: rowSpacing,
      padding: padding
    );
  }
  final double gridWidth = math.max(0.0, constraints.maxWidth - padding.horizontal);
  // We inflate the gridWidth by columnSpacing because the columnSpacing for
  // the rightmost tile in the grid doesn't actually consume space in the
  // grid because the rightmost tile is flush to the right interior edge of
  // the grid.
  final double totalColumnExtent = gridWidth + columnSpacing;
  final double maxColumnWidth = maxTileWidth + columnSpacing;
  final int columnCount = (totalColumnExtent / maxColumnWidth).ceil();
  final int rowCount = (childCount / columnCount).ceil();
  final double columnWidth = totalColumnExtent / columnCount;
  final double tileWidth = columnWidth - columnSpacing;
  final double tileHeight = tileWidth / tileAspectRatio;
  return new GridSpecification.fromRegularTiles(
    tileWidth: tileWidth,
    tileHeight: tileHeight,
    columnCount: columnCount,
    rowCount: rowCount,
    columnSpacing: columnSpacing,
    rowSpacing: rowSpacing,
    padding: padding
  );
}