Those that try to be the same size as their children.
For example, the boxes used by Transform and
Opacity.

Those that try to be a particular size.
For example, the boxes used by Image and
Text.

Some widgets, for example Container,
vary from type to type based on their constructor arguments.
In the case of Container, it defaults
to trying to be as big as possible, but if you give it a width,
for instance, it tries to honor that and be that particular size.

Others, for example Row and Column (flex boxes)
vary based on the constraints they are given,
as described below in the “Flex” section.