Flutter Container()与SizedBox()的虚拟清空

时间:2019-08-29 04:53:20

标签: flutter dart

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

return _isLoaded ? Container() : LoaderWidget();

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

return _isLoaded ? SizedBox() : LoaderWidget();

我错了吗?

4 个答案:

答案 0 :(得分:3)

如果用作占位符:

容器,如果该窗口小部件没有子级,没有高度,没有宽度,没有约束并且没有对齐方式,但是父级提供了边界约束,则Container会扩展以适合父级提供的约束。

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

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

答案 1 :(得分:1)

关于Container()class(widget)具有更多的属性和方法,实例化它的开销会更高一些,因此使用SizedBox的效率更高。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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