在Flutter中,Expanded
和Spacer
有什么区别?为什么我们已经拥有Spacer
的Flutter团队添加了Expanded
?
答案 0 :(得分:4)
Spacer
和Expanded
都执行相同的工作,即它们会填充Row
或Column
之类的小部件中的剩余空间。在Spacer
之前,我们必须使用
Expanded(child: Container())
这不是很好。使用Spacer
,我们只需要使用
Spacer()
因此,使用Spacer
可以防止我们编写更多的代码,并且它还清楚地表明我们只是在使用它来填充剩余的空间。两者都具有flex
的相同属性,默认为1
。唯一的区别是我们没有有意义的child
属性。实际上Spacer
是
Expanded(child: SizedBox.shrink());
TL; DR
Spacer()
等效于
Expanded(child: Container())
答案 1 :(得分:3)
Expanded
使其 child 小部件占据空间。
Spacer
本身会占用空间。
如果您查看implementation of Spacer
,您会发现它是Expanded
的包装,上面有一个假孩子。
Spacer
真的有必要吗?可能不会。在备用Universe中,Expanded
可以有一个可选的child
参数。