【问题标题】:Flutter Container() vs SizedBox() for dummy emptyFlutter Container() vs SizedBox() 用于虚拟空
【发布时间】:2020-01-02 07:37:16
【问题描述】:

我对此很好奇。我已经看到很多使用Container() 用于虚拟隐藏小部件的示例,例如,当加载完成时,我们使用setState(() { _isLoaded = true; });。 所以我们可以这样使用状态,对吧?

return _isLoaded ? Container() : LoaderWidget();

或者也许使用SizedBox()实际上更好,因为它不需要太多参数并且通常用于填充?

return _isLoaded ? SizedBox() : LoaderWidget();

还是我错了?

【问题讨论】:

标签: flutter dart


【解决方案1】:

关于Container() 类(widget) 有更多的属性和方法,实例化它的成本会稍微高一点,所以你说得对,使用SizedBox 效率更高。

【讨论】:

    【解决方案2】:

    如果用作占位符:

    Container 如果小部件没有子项、没有高度、没有宽度、没有约束和没有对齐,但父级提供了有界约束,则 Container 扩展以适应父级提供的约束。

    SizedBox 如果小部件没有子级、没有高度、没有宽度,则宽度和高度为零。

    因此,SizedBox() 更多地用作语法占位符。

    另外,请注意 SizedBox() 是 const 构造函数,但 Container() 不是。第一个允许编译器创建更高效​​的代码。

    【讨论】:

    • 我在问自己为什么在一些代码中人们使用 const 来实例化一些类,现在我将明确地搜索这个主题:) 谢谢!
    【解决方案3】:

    您可以使用Visibility 小部件,它将默认使用SizedBox 进行替换。

    【讨论】:

      【解决方案4】:

      Placeholder 小部件怎么样?该名称本身表明您使用它,它还有一个const 构造函数。虽然默认情况下,它会绘制一个灰色的 X,但是当你给它透明的颜色时,它也被解决了。

      return _isLoaded ? const Placeholder(color: Colors.transparent) : LoaderWidget();
      

      【讨论】:

        猜你喜欢
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-25
        • 2021-12-14
        • 2020-07-25
        • 1970-01-01
        • 2021-09-25
        相关资源
        最近更新 更多