Flutter垫片与扩展

时间:2019-06-01 03:08:39

标签: flutter dart

在Flutter中,ExpandedSpacer有什么区别?为什么我们已经拥有Spacer的Flutter团队添加了Expanded

2 个答案:

答案 0 :(得分:4)

SpacerExpanded都执行相同的工作,即它们会填充RowColumn之类的小部件中的剩余空间。在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参数。