flutter:空箱为何不报警?

gcuhipw9  于 2022-12-27  发布在  Flutter
关注(0)|答案(3)|浏览(101)

没什么问题但我有点好奇...
在flutter中,如果你写一个代码:

child: Container(
         height: 20,
         child: Container(), // could be any widget
       ),

它给出SizedBox for whitespace.的警告。
但为什么在我执行此操作时不显示此警告?

child: Container()

我看到许多代码在不显示内容时返回Container()

t9eec4r0

t9eec4r01#

当使用固定高度的嵌套Container时,您看到的警告建议您使用SizedBox小部件,这是因为SizedBox是创建固定大小小部件的更有效的方法,因为它不涉及在渲染树中创建不必要的RenderBox
Container是一个比SizedBox重的Widget,而且SizedBox有一个常量构造函数。-Lint Rule
另一方面,当你使用一个没有固定大小的Container时,就不需要使用SizedBox,因为Container本身并不创建一个固定大小的小部件,在这种情况下,Container只会占用渲染其内容所需的空间。
常见的情况是将单个Container用作占位符或其他小部件的简单容器,在这些情况下,使用SizedBox没有意义,因为它会不必要地增加布局的复杂性。
值得注意的是,您看到的警告只是一个建议,而不是硬性规则,您可以选择忽略警告,并使用固定大小的嵌套Container,如果这是最适合您的用例的解决方案。

cxfofazt

cxfofazt2#

Flutter的新版本建议使用SizedBox来处理空白(不包含任何内容,或者只包含给定的宽度或高度,不包含其他内容的空间)。
这样你就可以为你的小工具创建一个干净的特定函数。
使用容器小部件,您可以获得更多功能,如颜色、装饰等。c

xj3cbfub

xj3cbfub3#

空容器的原因()不引发警告是因为它是有效的小部件,调用时不会引发错误。这是因为空容器是空的空间,这是UI设计中的有效用例。此外,Flutter的设计非常灵活,能够处理各种UI设计。因此,Flutter不引发空容器()的警告。

相关问题