我已经阅读了SizedBox
和LimitedBox
的文档,但发现两者之间没有任何实际区别。
有人可能会失败并进行其他工作吗?
答案 0 :(得分:1)
所以我发现,LimitedBox
仅在子级不受其父级width/height
约束时可用。
并且SizedBox
仅创建具有给定width/height
的框,并且不允许子级超出给定尺寸。
示例:(LimitedBox
)
@override
Widget build(BuildContext context) {
return Scaffold(
body: LimitedBox(
maxHeight: 50, // no impact because it's child `Text` width/height isn't unconstrained
child: Text(
"A",
style: TextStyle(fontSize: 200),
),
),
);
}
示例(SizedBox
)
@override
Widget build(BuildContext context) {
return Scaffold(
body: SizedBox(
height: 50, // has impact, it won't let Text to be of more than 50 logical pixels high
child: Text(
"A",
style: TextStyle(fontSize: 200),
),
),
);
}
注意:如果有人有更好的回答,我很乐意接受他们的回答。
答案 1 :(得分:1)
答案 2 :(得分:0)
任何人都可以举一个例子,一个人可能失败而其他工作吗?
他们都会工作,但是他们会做不同的事情。 the LimitedBox
documentation中的示例说:
当编写通常试图匹配其父母的大小的小部件时,这很有用,以便它们在列表中表现合理。
想象一下,您正在创建一个可重用的窗口小部件,并且无法控制其使用位置。您可以使用SizedBox
,但是您的窗口小部件将始终具有指定的大小,即使其大小已经受到父窗口小部件的约束。
答案 3 :(得分:0)
LimitBox:
LimitBox仅在其大小不受限制时才有效,如果此小部件的 最大宽度不受限制,则其子项的宽度限于 [maxWidth]。同样,如果此小部件的最大高度为 不受限制,则其子代的身高限制为[maxHeight]。
示例:
Center(
child: LimitedBox(
maxWidth: 50,
child: Container(
color: Colors.red,
width: 20,
height: 100,
)
),
),
输出:
这限制了Container
小部件的最大宽度为50,但是它将显示小部件直到容器宽度为20。
SizeBox:
它具有固定的大小,限制了其子对象在 有限的区域。如果width或height为null,则此小部件将 尝试调整自己的尺寸以匹配该尺寸孩子的尺寸。如果 孩子的大小取决于其父母的大小,身高和宽度 必须提供。
示例:
Center(
child: SizedBox(
width: 50,
child: Container(
color: Colors.red,
width: 20,
height: 100,
)
),
),
输出:
这也将像LimitedBox
一样工作,但此处Container
的唯一区别将显示为SizeBox
的宽度50,它将不考虑它自己的宽度20并绘制直到父窗口小部件。