关于MainAxisSize.min和CrossAxisAlignment.center

来源:8-2 APP首页框架搭建-Scaffold与PageView【搭了个框架】

qq_猫机灵_0

2019-10-19

问题一:
mainAxisSize: MainAxisSize.min 这个属性什么含义?
为什么使用了这个属性后,每个Icon都会垂直居中?
问题二:
crossAxisAlignment: CrossAxisAlignment.center这个属性不是交叉轴居中吗?
但是ChoiceCard中已经用了Center组件,为什么还要写这个属性呢?况且把这行代码注释掉,界面展示也没有变化。

图片描述

写回答

1回答

CrazyCodeBoy

2019-10-21

  • mainAxisSize:表示Row在主轴(水平)方向占用的空间,默认是MainAxisSize.max,表示尽可能多的占用水平方向的空间,此时无论子widgets实际占用多少水平空间,Row的宽度始终等于水平方向的最大宽度;而MainAxisSize.min表示尽可能少的占用水平空间,当子组件没有占满水平剩余空间,则Row的实际宽度等于所有子组件占用的的水平空间;

  • crossAxisAlignment:表示子组件在纵轴方向的对齐方式,Row的高度等于子组件中最高的子元素高度,它的取值和MainAxisAlignment一样(包含start、end、 center三个值),不同的是crossAxisAlignment的参考系是verticalDirection,即verticalDirection值为VerticalDirection.down时crossAxisAlignment.start指顶部对齐,verticalDirection值为VerticalDirection.up时,crossAxisAlignment.start指底部对齐;而crossAxisAlignment.end和crossAxisAlignment.start正好相反;

因为MainAxisSize.min后Colum的宽度就不会撑满整个屏幕,加上外层Center的约束,所以会使得所有的子元素都水平居中,在这种情况下可以不色红孩子CrossAxisAlignment.center;

2
1
qq_猫机灵_0
感谢老师详细的作答!
2019-10-22
共1条回复

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3274 问题

查看课程