Flutter SizedBox与LimitedBox

时间:2019-08-12 04:24:55

标签: flutter dart

我已经阅读了SizedBoxLimitedBox的文档,但发现两者之间没有任何实际区别。

有人可能会失败并进行其他工作吗?

4 个答案:

答案 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)

除非父窗口小部件施加约束,否则

LimitedBoxSizedBox


来自文档

  

仅在不受限制时限制其大小的框。


参考

Flutter doc

答案 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。

enter image description here

SizeBox:

它具有固定的大小,限制了其子对象在 有限的区域。如果width或height为null,则此小部件将 尝试调整自己的尺寸以匹配该尺寸孩子的尺寸。如果 孩子的大小取决于其父母的大小,身高和宽度 必须提供。

示例:

Center(
        child: SizedBox(
            width: 50,
            child: Container(
              color: Colors.red,
              width: 20,
              height: 100,
            )
        ),
      ),

输出:

这也将像LimitedBox一样工作,但此处Container的唯一区别将显示为SizeBox的宽度50,它将不考虑它自己的宽度20并绘制直到父窗口小部件。

enter image description here