Flutter Container() 与 SizedBox() 用于虚拟空

Tau*_*nda 10 dart flutter

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

return _isLoaded ? Container() : LoaderWidget();
Run Code Online (Sandbox Code Playgroud)

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

return _isLoaded ? SizedBox() : LoaderWidget();
Run Code Online (Sandbox Code Playgroud)

还是我错了?

Spa*_*atz 25

如果用作占位符:

Container如果widget 没有子级、没有高度、没有宽度、没有约束和没有对齐,但是父级提供了有界约束,那么Container 会扩展以适应父级提供的约束。

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

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

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


gee*_*ano 5

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