建站哪家好 phpwind,wordpress主页文章页,做网站需要人员,网络运营商官网MainAxisAlignment 是一个枚举类#xff0c;用于控制主轴#xff08;Main Axis#xff09; 方向上子组件的排列和对齐方式。MainAxisAlignment 的常用取值及效果#xff1a;MainAxisAlignment.start子组件沿主轴的起点对齐#xff08;Row 左对齐#xff0c;Column 顶部对…MainAxisAlignment 是一个枚举类用于控制主轴Main Axis 方向上子组件的排列和对齐方式。MainAxisAlignment 的常用取值及效果MainAxisAlignment.start子组件沿主轴的起点对齐Row 左对齐Column 顶部对齐MainAxisAlignment.end子组件沿主轴的终点对齐Row 右对齐Column 底部对齐MainAxisAlignment.center子组件在主轴方向上居中对齐MainAxisAlignment.spaceBetween子组件之间均匀分配剩余空间首尾组件贴近边缘无额外间距MainAxisAlignment.spaceAround子组件两侧分配相等空间首尾组件到边缘的距离是组件间距的一半MainAxisAlignment.spaceEvenly子组件之间及与边缘的距离完全相等
Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, // 水平方向均匀分布children: [Container(width: 50, height: 50, color: Colors.red),Container(width: 50, height: 50, color: Colors.green),Container(width: 50, height: 50, color: Colors.blue),],
)属性功能描述取值示例mainAxisSize决定容器在主轴方向上的空间大小- max尽可能占满父容器的空间- min仅包裹子组件不额外占空间MainAxisSize.max默认、MainAxisSize.minmainAxisAlignment决定子组件在容器的主轴空间内如何排列如对齐方式、间距分配start、center、spaceBetween 等情况 1mainAxisSize: max容器占满空间
Row(mainAxisSize: MainAxisSize.max, // 容器宽度屏幕宽度mainAxisAlignment: MainAxisAlignment.spaceBetween, // 子组件分散在整个宽度上children: [Container(width: 50, height: 50, color: Colors.red),Container(width: 50, height: 50, color: Colors.green),],
)效果两个色块分别靠向屏幕左右边缘中间有大量空隙利用了容器的全部宽度。情况 2mainAxisSize: min容器仅包裹子组件
Row(mainAxisSize: MainAxisSize.min, // 容器宽度两个色块宽度之和100mainAxisAlignment: MainAxisAlignment.spaceBetween, // 无效果没有额外空间children: [Container(width: 50, height: 50, color: Colors.red),Container(width: 50, height: 50, color: Colors.green),],
)效果两个色块紧挨着总宽度 100spaceBetween 无法产生间距因为容器没有多余空间。CrossAxisAlignmentWarp在 Flutter 中Wrap 是一个布局组件用于在子组件超出父容器边界时自动换行或换列类似于文本换行的效果。它解决了 Row/Column 中子组件超出界溢出的问题是处理动态数量子组件布局的常用选择。常用属性direction指定主轴方向默认水平Axis.horizontal水平方向排列空间不足时换行默认Axis.vertical垂直方向排列空间不足时换列spacing主轴方向上子组件之间的间距runSpacing行与行或列与列之间的间距alignment主轴方向上的对齐方式类似 mainAxisAlignmentcrossAxisAlignment交叉轴方向上的对齐方式类似 CrossAxisAlignment示例代码下面是一个水平方向的 Wrap 示例包含多个按钮当屏幕宽度不足时会自动换行
Wrap(direction: Axis.horizontal, // 水平方向排列默认spacing: 8.0, // 按钮之间的水平间距runSpacing: 8.0, // 行之间的垂直间距alignment: WrapAlignment.start, // 每行左对齐children: [ElevatedButton(onPressed: () {}, child: Text(按钮1)),ElevatedButton(onPressed: () {}, child: Text(按钮2)),ElevatedButton(onPressed: () {}, child: Text(按钮3)),ElevatedButton(onPressed: () {}, child: Text(按钮4)),ElevatedButton(onPressed: () {}, child: Text(按钮5)),ElevatedButton(onPressed: () {}, child: Text(按钮6)),],
)1. Stack堆叠容器Stack 是一个容器组件用于将子组件按顺序堆叠在一起后面的子组件会覆盖在前面的子组件之上类似 CSS 中的 position: absolute 堆叠效果。核心特点子组件默认左上角对齐可以通过 alignment 属性修改默认对齐方式。本身不限制大小默认会根据子组件中最大的尺寸来调整自身大小也可通过 fit 属性控制。2. Positioned定位组件Positioned 只能作为 Stack 的直接子组件用于精确控制子组件在 Stack 中的位置通过设置与 Stack 边缘的距离来定位。常用属性用于定位left距离 Stack 左边缘的距离right距离 Stack 右边缘的距离top距离 Stack 上边缘的距离bottom距离 Stack 下边缘的距离width/height固定子组件的宽高可选不设置则由子组件自身大小决定示例图片上叠加文字和图标下面的代码实现了 “背景图 顶部标题 右下角图标” 的层叠效果
Stack(// 未使用 Positioned 的子组件会默认左上角对齐可通过 alignment 修改alignment: Alignment.center, // 未定位子组件的默认对齐方式这里无效因为所有子组件都用了 Positionedchildren: [// 底层背景图片占满 StackPositioned.fill( // 快捷方式让子组件填满整个 Stackchild: Image.network(https://picsum.photos/400/300,fit: BoxFit.cover, // 图片铺满容器alt: 示例背景图,),),// 中层顶部标题距离顶部 16 像素水平居中Positioned(top: 16,left: 0,right: 0, // left 和 right 都设为 0 可让组件水平占满配合 textAlign 居中child: Text(风景照片,style: TextStyle(color: Colors.white, fontSize: 20, fontWeight: FontWeight.bold),textAlign: TextAlign.center,),),// 上层右下角图标距离右和下各 16 像素Positioned(right: 16,bottom: 16,child: Icon(Icons.favorite, color: Colors.red, size: 30),),],
)