正如文档所说
没有子项的容器会尝试尽可能大,除非 传入的约束是无界的,在这种情况下,它们会尝试作为 越小越好
好吧,当我对内部容器设置无界传入约束时,我认为它应该是
as small as possible
,但它会扩展到整个屏幕。
body: Container(
color: Colors.red,
constraints: const BoxConstraints(
maxHeight: double.infinity,
maxWidth: double.infinity,
),
child: Container(
color: Colors.green,
),
),
如果您进一步阅读文档,您会发现
Container
本身的约束参数将覆盖此行为:
没有子容器的容器会尝试尽可能大,除非传入的约束是无限的,在这种情况下,它们会尝试尽可能小。带有孩子的容器会根据孩子的大小调整自己的大小。构造函数的宽度、高度和约束参数会覆盖此参数。
尝试将内部无子项
Container
包裹在UnconstrainedBox
中,您会看到它会收缩到零宽度和高度。
body:
Container(
color: Colors.red,
width: double.infinity,
height:double.infinity,
child: UnconstrainedBox(
child: Container(
color: Colors.green,
),
),
)
虽然红色容器有无限大的尺寸,但你把它放在有特定尺寸的脚手架体内。所以你的红色容器得到特定的大小,然后你没有孩子的绿色容器得到和它的父母一样大的大小。
红色
container
实际上会尽可能小,具体取决于它的孩子。
绿色容器没有子容器,那么正如文档所说,它将尝试尽可能大,除非传入的约束是无界的,
如果您更改子组件,例如文本小部件、列或其他小部件,它将不会获得最大大小。