Flutter performs one layout per frame, and the layout algorithm works
in a single pass. Constraints are passed down the tree by parent
objects calling the layout method on each of their children.
The children recursively perform their own layout and then return
geometry up the tree by returning from their layout method. Importantly,
once a render object has returned from its layout method, that render
object will not be visited again1
until the layout for the next frame. This approach combines what might
otherwise be separate measure and layout passes into a single pass and,
as a result, each render object is visited at most
twice2 during layout: once on the way
down the tree, and once on the way up the tree.