
在 Flutter 中,页面布局是新手最容易困惑、但也是最重要的基础之一。
如果你已经成功运行了第一个 Flutter 应用,那么下一步,就是学会如何把页面内容正确地摆放出来。
本文将用尽量直观、易理解的方式,带你掌握 Flutter 页面布局的核心思想。
一、Flutter 布局的核心思想:一切都是 Widget
在 Flutter 中:
- 页面是 Widget
- 文本是 Widget
- 按钮是 Widget
- 布局方式本身也是 Widget
布局的本质,就是 Widget 的嵌套组合。
你不是在“画页面”,而是在“组合 Widget”。
二、最基础的布局组件:Row 和 Column
1. Column:纵向布局(最常用)
Column 用于从上到下排列组件。
1 | Column( |
组件会按顺序垂直排列。
2. Row:横向布局
Row 用于从左到右排列组件。
1 | Row( |
常见使用场景包括:
- 图标 + 文本
- 按钮并排
- 列表项左右结构
三、主轴与交叉轴(理解一次,长期受用)
这是 Flutter 布局中非常重要的概念。
以 Column 为例:
- 主轴(Main Axis):垂直方向
- 交叉轴(Cross Axis):水平方向
常用属性示例:
1 | Column( |
常见取值说明:
- MainAxisAlignment.start:从顶部开始
- MainAxisAlignment.center:居中
- MainAxisAlignment.spaceBetween:两端对齐
四、让布局自动伸缩:Expanded 和 Flexible
1. Expanded:占满剩余空间
1 | Row( |
两个组件会自动平分可用宽度。
2. 不使用 Expanded 的情况
1 | Row( |
这种写法宽度固定,不会适配屏幕大小。
五、Padding 与 SizedBox:控制间距的正确方式
Flutter 没有直接的 margin 属性,间距主要通过以下方式实现。
1. Padding:内边距
1 | Padding( |
2. SizedBox:占位间隔
1 | Column( |
六、Container:新手最常用的万能组件
Container 可以同时设置:
- 背景色
- 宽高
- 内边距
- 边框
1 | Container( |
新手阶段,大多数布局都可以先用 Container 包一层。
七、Center 与 Align:快速对齐组件
1. Center:完全居中
1 | Center( |
2. Align:自定义位置
1 | Align( |
八、一个完整的页面布局示例
1 | Scaffold( |
九、新手常见布局错误
1. Row / Column 内容溢出
解决方式:
- 使用 Expanded
- 使用 SingleChildScrollView
2. Container 嵌套过多
建议:
- 布局使用 Row / Column
- 样式再用 Container
3. 所有代码写在一个 Widget 中
建议:
- 拆分小组件
- 提高可读性与维护性
十、总结
Flutter 页面布局的关键在于三点:
- 一切都是 Widget
- Row / Column 是核心
- Expanded + Padding 决定布局质量
掌握这些基础组件,你已经可以构建结构清晰、适配良好的页面。
下一步学习建议
- Flutter 列表布局(ListView / GridView)
- Flutter 页面跳转与导航
- Flutter 状态管理入门
- Flutter 页面组件拆分技巧