Implementation
@override
DiagramSize get minimumSize {
final extents = _extents, weights = _weights;
var fixed = gap * (children.length - 1),
flex = 0.0,
unit = 0.0,
cross = 0.0;
for (var i = 0; i < children.length; i++) {
// A part that can hide, such as an optional section, may take no space,
// and a content-sized part is exactly as tall as its measured content.
if (children[i]
case ShapeSized(visibleWhen: _?) ||
ShapeSized(contentHeightSlot: _?)) {
continue;
}
final size = children[i].minimumSize;
cross = math.max(cross, _cross(size));
if (extents[i] case final extent?) {
fixed += extent;
} else {
flex += weights[i];
unit = math.max(unit, _main(size) / weights[i]);
}
}
final main = fixed + flex * unit;
return horizontal ? DiagramSize(main, cross) : DiagramSize(cross, main);
}