我们平时在写 Row/Column 的时候,一般会配置一下子widget 的排列方式。
默认排序方式
默认的排列方式有如下:
1 | enum MainAxisAlignment { |
看图了解一下。
spaceBetween:

spaceAround:

spaceEvenly:

可以看到确实如我们刚才所写的一样。
不规则排序
那如果这个时候我想实现如下效果,该怎么做?

一个小方块在最前面,两个小方块在后面。
这个时候就需要Spacer,那什么是Spacer,按照惯例来看官方文档:
1 | Spacer creates an adjustable, empty spacer that can be used to tune the spacing between widgets in a Flex container, like Row or Column. |
接下来再看一下该类,确定一下怎么使用:
1 | class Spacer extends StatelessWidget { |
可以看到,它其实就是包装了一个 Expanded 的 SizedBox 。
知道了原理以后我们就可以灵活控制 Row/Column了。
示例如下:
1 | body: Center( |
效果如下:

总结
其实Spacer 就是包装好的 Expanded,但是这样也简化了我们很多的代码。
在 Flutter 中还有很多能简化我们代码的地方。
关注我,每天分享 Flutter & Dart 相关知识。
完整代码已经传至GitHub:https://github.com/wanglu1209/WFlutterDemo