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

Flutter 中的 Expanded 小部件:全面指南

Flutter 中的 Expanded 小部件:全面指南

在 Flutter 中,Expanded 是一个用于控制子控件占据可用空间的布局小部件,通常与 RowColumnFlex 等父级布局小部件一起使用。Expanded 允许你创建灵活的布局,其中子控件可以按照指定的 flex 因子填充可用空间。

基础用法

Expanded 最基本的用法是包裹其他小部件,使其在父级布局中占据剩余空间:

Row(children: <Widget>[Expanded(child: Container(color: Colors.red),),Expanded(child: Container(color: Colors.blue),),],
)

在这个例子中,两个 Container 小部件将会各自占据 Row 的一半宽度。

flex 属性

Expandedflex 属性定义了子控件在父级布局中分配空间的相对比例。flex 值越大,子控件占据的空间越多:

Row(children: <Widget>[Expanded(flex: 2,child: Container(color: Colors.red),),Expanded(flex: 1,child: Container(color: Colors.blue),),],
)

在这个例子中,红色 Container 将占据比蓝色 Container 多的空间。

fill 属性

fill 属性决定了子控件是否应该填充父级布局分配给它的所有空间。默认值为 true,意味着子控件将完全填充分配给它的空间:

Expanded(fill: true,child: Container(color: Colors.green),
)

如果你想要子控件不填充分配给它的所有空间,可以设置 fillfalse

FlexFit 属性

flexFit 属性允许你控制 Expanded 子控件的 FlexParentData 如何调整其子控件的大小。它接受 FlexFit.looseFlexFit.tight 两个值:

  • FlexFit.loose:子控件的大小将基于其最小约束而不是父级分配给它的全部空间。
  • FlexFit.tight:子控件将尽可能大地增长以填充分配给它的空间。
Expanded(flex: 1,flexFit: FlexFit.tight,child: Container(color: Colors.purple),
)

与非 Expanded 小部件配合使用

Expanded 可以与非 Expanded 小部件一起使用,非 Expanded 小部件将占据固定空间,而 Expanded 小部件将填充剩余空间:

Row(children: <Widget>[Container(width: 100.0, height: 50.0, color: Colors.black),Expanded(child: Container(color: Colors.green),),],
)

控制子控件的对齐

Expanded 允许你控制子控件在交叉轴上的对齐方式:

Row(children: <Widget>[Expanded(alignment: Alignment.center,child: Container(color: Colors.yellow),),],
)

在这个例子中,黄色 Container 将在其分配的空间内居中对齐。

实例:响应式布局

Expanded 可以用于创建响应式布局,其中子控件的大小可以根据屏幕大小变化:

Row(children: <Widget>[Expanded(child: Container(color: Colors.red),),SizedBox(width: 10.0), // 固定宽度的空间Expanded(child: Column(children: <Widget>[Container(height: 50.0, color: Colors.blue),SizedBox(height: 10.0), // 固定高度的空间Container(height: 50.0, color: Colors.green),],),),],
)

结语

Expanded 是 Flutter 中一个非常实用的小部件,它提供了一种简单而灵活的方式来控制子控件在布局中占据的空间。通过合理使用 Expanded,你可以创建出既美观又适应不同屏幕尺寸的布局界面。掌握 Expanded 的使用,对于任何 Flutter 开发者来说都是一项重要的技能。

http://www.lryc.cn/news/347429.html

相关文章:

  • [Kubernetes] KubeKey 部署 K8s v1.28.8
  • C# 与 Qt 的对比分析
  • MapReduce | 二次排序
  • Java后端初始化项目(项目模板)
  • electron 多窗口 vuex/pinia 数据状态同步简易方案(利用 LocalStorage)
  • 自定义数据集图像分类实现
  • 【C++】手搓读写ini文件源码
  • undolog
  • 项目文档分享
  • 【深耕 Python】Quantum Computing 量子计算机(5)量子物理概念(二)
  • 手写Spring5【笔记】
  • 2024中国(重庆)机器人展览会8月举办
  • Apache 开源项目文档中心 (英文 + 中文)
  • 蓝桥杯 算法提高 ADV-1164 和谐宿舍 python AC
  • Dragonfly 拓扑的路由算法
  • android基础-服务
  • mysql 事物
  • Unity Shader中获取像素点深度信息
  • ROS——Action学习
  • 基于C语言中的类型转换,C++标准创造出了更加可视化的类型转换
  • 如何创建族表
  • 【UnityRPG游戏制作】Unity_RPG项目_PureMVC框架应用
  • 并行计算的一些知识点分享--并行系统,并行程序, 并发,并行,分布式
  • 设计模式:访问者模式
  • vivado Virtex-7 配置存储器器件
  • 检测服务器环境,实现快速部署。适用于CRMEB_PRO/多店
  • Spring Security初探
  • 【Java代码审计】敏感信息泄漏篇
  • Windows Server 2012 R2 新增D盘分区
  • transformer与beter