Flutter从入门到写出完整App Day4

2020-06-22  本文已影响0人  JackLeeVip

20.3.9 一

多子布局组件

2.1 Flex组件

Flex Widget
Row和Column继承自Flex
Flex: CSS Flex布局
必传参数direction
direction: Axis.horizontal: Row
direction: Axis.vertical: Column
开发中直接使用Flex比较少
多直接使用Column、Row

主轴和交叉轴的概念

主轴: Main Axis
交叉轴: Cross Axis
剩余的间距平均分给Row的子组件
以前用浮动float来做 -> Flex布局

mainAxisAlignment: 6个值
start(默认): 沿着主轴的开始位置, 紧挨着排每一个组件
end: 沿着主轴的结束位置, 挨着摆放组件
center: 主轴的中心点对齐
spaceBetween: 将左右两面的间距为0, 其他组件之间平分间距
spaceAround: 左右两边的间距, 是其他组件之间的间距的一半
spaceEvenly: 所有的间距平分空间

Row的特点: 水平方向尽可能占据比较大的空间, 垂直方向包裹内容
水平方向包裹内容
-> 设置mainAxisSize = min; (默认max)
设置后就没有剩余空间

CrossAxisAlignment:
start: 交叉轴起始位置对齐
end: 交叉轴的结束位置对齐
center(默认值): 中心点对齐

baseline: 基线对齐, (必须有文本的时候才起效果)
文字的排版, 文字的行距, 文字排版有很多的线, 顶线/底线, 之间是行高
line-height: 行高高于文字的高度text-height
(line-height - text-height) / 2
vertical-align:
文字下沉, x最底部的线是基线, 不是底线 alphabetic ideographic

stretch: 先让Row占据交叉轴尽可能大的空间, 将所有的子组件交叉轴的高度, 拉伸到最大
用Container包裹一个Row限制最大拉伸高度

Column
verticalDirection VerticalDirection.up, 从下到上排
垂直方向上很少用基线对齐

textDirection: TextDirection.rtl,阅读方向改成从右往左, 这个属性用的少

需求: 剩余的宽度全部分给第一个红色的组件

  1. Expanded
    包裹一个Flexible, 里面的属性flex
    fit: FlexFit.tight, 默认loose
    多个Flexible, 会预留一些空间
    比例的问题, 包裹的组件的宽度一致, 等分
    flex: 1, 只和flex有关系, 跟宽度没有关系

Expanded(用的更多) -> Flexible(fit: FlexFit.tight)
超出区域出现黄色条状警告
用Expanded包裹, 避免警告

2.3 Stack组件

默认情况下, 不会出现组件之间的重叠
Stack默认的大小是包裹内容
alignment: AlignmentDirectional.center,// 从什么位置开始排布所有的子Widget
fit: StackFit.expand, // 默认loose 很少用 将子组件拉伸到尽可能大
overflow: Overflow.visible, 超出部分如何处理 超出可显示
Positioned 布局Widget

hasSize错误

上一篇下一篇

猜你喜欢

热点阅读