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

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.dtcms.com/a/319772.html

相关文章:

  • 【java基础|第十六篇】面向对象(六)——抽象和接口
  • Java-JVM探析
  • 参考平面与返回电流
  • BMS保护板测试仪:电池安全管理的“质检卫士”|深圳鑫达能
  • Java爬虫性能优化:多线程抓取JSP动态数据实践
  • 键盘+系统+软件等快捷键大全
  • RK3568笔记九十八:使用Qt实现RTMP拉流显示
  • FluentUI-main的详解
  • MyBatis联合查询
  • windows有一个企业微信安装包,脚本执行并安装到d盘。
  • 我的世界Java版1.21.4的Fabric模组开发教程(十七)自定义维度
  • PCL提取平面上的圆形凸台特征
  • WindowsLinux系统 安装 CUDA 和 cuDNN
  • 从库存一盘货到全域智能铺货:巨益科技全渠道平台助力品牌业财一体化升级
  • 电子基石:硬件工程师的器件手册 (九) - DC-DC拓扑:电能转换的魔术师
  • 线上业务突然流量掉 0 ?一次 DNS 污染排查与自救实录
  • Qt中类提升后不显示问题
  • 纷享销客前端实习一面
  • 数据结构(五):顺序循环队列与哈希表
  • 纪念《信号与系统》拉普拉斯变换、Z变换之前内容学完
  • 树莓派Raspberry Pi 烧录
  • TCP/IP 协议中的三次握手和四次挥手-----详解笔记
  • 板块三章节3——NFS 服务器
  • 人工智能2.0时代的人才培养和通识教育
  • 计算机视觉第一课opencv(一)保姆级教学
  • lane_up channel_up
  • mysql8.0.40服务日志时间和linux系统时间不同步问题!
  • 指针——练习
  • 算法 - 贪心算法
  • 计网学习笔记第3章 数据链路层层(灰灰题库)