Flutter开发App的未来及其在各行业的应用潜力分析
903
2022-10-09
Flutter Row、Column布局
Row的布局有六个步骤,这种布局表现来自Flex(Row和Column的父类):
首先按照不受限制的主轴(main axis)约束条件,对flex为null或者为0的child进行布局,然后按照交叉轴( cross axis)的约束,对child进行调整;按照不为空的flex值,将主轴方向上剩余的空间分成相应的几等分;对上述步骤flex值不为空的child,在交叉轴方向进行调整,在主轴方向使用最大约束条件,让其占满步骤2所分得的空间;Flex交叉轴的范围取自子节点的最大交叉轴;主轴Flex的值是由mainAxisSize属性决定的,其中MainAxisSize可以取max、min以及具体的value值;每一个child的位置是由mainAxisAlignment以及crossAxisAlignment所决定。
的Flex布局,包括主轴、交叉轴等概念:
构造函数如下:
Row({ Key key, MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, MainAxisSize mainAxisSize = MainAxisSize.max, CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center, TextDirection textDirection, VerticalDirection verticalDirection = VerticalDirection.down, TextBaseline textBaseline, List
MainAxisAlignment:主轴方向上的对齐方式,会对child的位置起作用,默认是start。
center:将children放置在主轴的中心;end:将children放置在主轴的末尾;spaceAround:将主轴方向上的空白区域均分,使得children之间的空白区域相等,但是首尾child的空白区域为1/2;spaceBetween:将主轴方向上的空白区域均分,使得children之间的空白区域相等,首尾child都靠近首尾,没有间隙;spaceEvenly:将主轴方向上的空白区域均分,使得children之间的空白区域相等,包括首尾child;start:将children放置在主轴的起点;
其中spaceAround、spaceBetween以及spaceEvenly的区别,就是对待首尾child的方式。其距离首尾的距离分别是空白区域的1/2、0、1。
MainAxisSize:在主轴方向占有空间的值,默认是max。
max:根据传入的布局约束条件,最大化主轴方向的可用空间;min:与max相反,是最小化主轴方向的可用空间;
CrossAxisAlignment:children在交叉轴方向的对齐方式,与MainAxisAlignment略有不同。
baseline:在交叉轴方向,使得children的baseline对齐;center:children在交叉轴上居中展示;end:children在交叉轴上末尾展示;start:children在交叉轴上起点处展示;stretch:让children填满交叉轴方向;
TextDirection:阿拉伯语系的兼容设置,一般无需处理。
VerticalDirection:定义了children摆放顺序,默认是down。
down:从top到bottom进行布局;up:从bottom到top进行布局。
top对应Row以及Column的话,就是左边和顶部,bottom的话,则是右边和底部。
TextBaseline:使用的TextBaseline的方式
示例:
Row( children:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~