performLayout method
Called to perform the actual layout computation for this render object.
Implementation
@override
void performLayout(Constraints constraints) {
final boxConstraints = constraints.asBoxConstraints;
for (final child in children) {
setupParentData(child);
child.layout(boxConstraints.loosen());
}
if (children.isEmpty) {
size = boxConstraints.constrain(const Size(1, 1));
return;
}
final availableWidth = boxConstraints.maxWidth;
final totalSpacing = crossAxisSpacing * (crossAxisCount - 1);
final cellWidth = (availableWidth - totalSpacing) ~/ crossAxisCount;
final maxRowHeight = _computeMaxRowHeight();
final rowCount = (children.length / crossAxisCount).ceil();
_positionChildren(cellWidth, maxRowHeight);
final totalHeight =
rowCount * maxRowHeight + (rowCount - 1) * mainAxisSpacing;
size = boxConstraints.constrain(Size(availableWidth, totalHeight));
}