当前位置: 首页 > news >正文

Flutter 布局控件使用详解 - 指南

Flutter 布局控件使用详解 - 指南

一、基础布局控件

1. Container:万能容器

Container(
width: 100,
height: 100,
padding: EdgeInsets.all(8),
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(8),
),
child: Text('Hello'),
)
  • ✅ 用于设置尺寸、边距、内边距、背景、对齐、装饰。
  • ⚠️ 如果只是设置颜色/间距/对齐,建议使用更轻量的控件。

2. Padding:内边距(比 Container 更轻)

Padding(
padding: EdgeInsets.all(16),
child: Text("有内边距的文本"),
)

3. Align / Center:对齐控件

Align(
alignment: Alignment.bottomRight,
child: Text("右下角"),
)
Center(
child: Text("居中"),
)

4. SizedBox:固定尺寸或间距

SizedBox(height: 20), // 用作间隔
SizedBox(width: 100, height: 50, child: Text("固定大小"))

二、线性布局控件(单方向)

1. Row:水平排列

Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text("左"),
Text("右"),
],
)

2. Column:垂直排列

Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("上"),
Text("下"),
],
)

3. Expanded & Flexible:撑满可用空间

Row(
children: [
Expanded(child: Text("占据剩余空间")),
Text("不变"),
],
)

三、层叠布局控件

1. Stack:层叠布局,子组件可重叠

Stack(
children: [
Container(width: 100, height: 100, color: Colors.red),
Positioned(
top: 10,
left: 10,
child: Text("叠在上面"),
),
],
)

四、列表类布局控件

1. ListView:滚动列表

ListView(
children: List.generate(10, (index) =>
Text("Item $index")),
)

2. GridView:网格布局

GridView.count(
crossAxisCount: 2,
children: List.generate(4, (index) =>
Text("格子 $index")),
)

五、约束 & 适配控件

1. ConstrainedBox / UnconstrainedBox

ConstrainedBox(
constraints: BoxConstraints(minWidth: 100, maxWidth: 200),
child: Text("有约束"),
)

2. FittedBox:缩放适配

FittedBox(
child: Text("文字很大"),
)

六、页面/区域布局控件

1. Scaffold:基本页面结构

Scaffold(
appBar: AppBar(title: Text("首页")),
body: Center(child: Text("内容")),
floatingActionButton: FloatingActionButton(onPressed: () {
})
)

2. SafeArea:避开系统 UI 区域(刘海/状态栏)

SafeArea(
child: Text("避开系统区域"),
)

七、弹性适配与媒体查询

1. MediaQuery:获取屏幕尺寸

double width = MediaQuery.of(context).size.width;

2. LayoutBuilder:按父布局约束适配

LayoutBuilder(
builder: (context, constraints) {
if (constraints.maxWidth >
600) {
return Text("大屏");
} else {
return Text("小屏");
}
},
)

实战建议:如何写出更优雅的布局

情况推荐控件
加间距Padding, SizedBox
固定大小SizedBox, Container
居中Center, Align
列表ListView, Column
网格GridView
多子组件层叠Stack
复杂布局(主内容 + 边栏等)Row + Expanded, Scaffold
动态适配LayoutBuilder, MediaQuery

总结

分类常用控件
单个控件Container, Padding, Align, SizedBox
水平/垂直Row, Column, Expanded, Flexible
叠加布局Stack, Positioned
页面结构Scaffold, SafeArea
滚动ListView, GridView, SingleChildScrollView
适配MediaQuery, LayoutBuilder, FittedBox
http://www.sczhlp.com/news/10501/

相关文章:

  • LHA6958D是ADS8588的代替料
  • 惠普笔记本电脑开机黑屏,一直响三长两短的滴滴声
  • selinux
  • 【转】Windows Server 系统的桌面上显示 此电脑 图标
  • hj_2025_0812
  • CF2062G Permutation Factory 题解
  • NBD(Network Block Device)简介及基本使用
  • 2024年12月齐鲁弱校联考
  • SpingBoot分段输出日志并自动删除
  • GLM4.5V视觉模型小试牛刀
  • 牛x,这也许是Coze(字节)平替,AIFlowy:企业级AI应用开发平台
  • Petrozavodsk Summer 2024. Day 2. K-ontest
  • pygame小游戏飞机大战_6敌人开火
  • Git 如何正确回滚代码?常见回滚操作对比,适用不同的场景
  • 嵌入式数据库_sqlite-duckdb
  • 抱歉!Java面试标准答案最不重要
  • PyCharm安装教程(附安装包)超详细下载安装激活教程(新手零基础安装指南)
  • maven配置阿里云镜像加速
  • RAID 磁盘阵列
  • 题解:P10965 Largest Submatrix - e
  • 面试防坑场景
  • 夜莺开源监控,模板函数一览
  • 10 个不错的 C 语言开源项目
  • systemctl服务管理
  • 打编程之024:免费本地AI客户端-Chatbox和CherryStudio
  • 绩效考核管理系统横评:功能对比、应用场景与企业选择指南
  • Windows10 安装编译后的 pysqlcipher3-v1.2.1 基于 Python 3.11.9
  • SEATA AT vs SAGA vs 本地消息表
  • Moka远程招聘系统:2025年AI视频面试+电子签零接触入职标准方案
  • 个性化联邦学习库PFLlib的技术解析与基准测试