Flutter学习笔记

Flutter-Flex、Row、Column组件

2020-04-18  本文已影响0人  WinJayQ

1. Flex组件

事实上,我们即将学习的Row组件和Column组件都继承自Flex组件。

2. Row组件

Row组件用于将所有的子Widget排成一行,实际上这种布局应该是借鉴于Web的Flex布局。
从源码中查看Row的属性:

Row({
  Key key,
  MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, // 主轴对齐方式
  MainAxisSize mainAxisSize = MainAxisSize.max, // 水平方向尽可能大
  CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center, // 交叉处对齐方式
  TextDirection textDirection, // 水平方向子widget的布局顺序(默认为系统当前Locale环境的文本方向(如中文、英语都是从左往右,而阿拉伯语是从右往左))
  VerticalDirection verticalDirection = VerticalDirection.down, // 表示Row纵轴(垂直)的对齐方向
  TextBaseline textBaseline, // 如果上面是baseline对齐方式,那么选择什么模式(有两种可选)
  List<Widget> children = const <Widget>[],
})

部分属性详细解析:
mainAxisSize:

mainAxisAlignment:表示子Widgets在Row所占用的水平空间内对齐方式

crossAxisAlignment:表示子Widgets在纵轴方向的对齐方式

image.png

2.1 Expanded

如果我们希望红色和黄色的Container Widget不要设置固定的宽度,而是占据剩余的部分,这个时候应该如何处理呢?
这个时候我们可以使用 Expanded 来包裹 Container Widget,并且将它的宽度不设置值;

3. Column组件

Column组件用于将所有的子Widget排成一列,学会了前面的Row后,Column只是和row的方向不同而已。
我们直接看它的源码:我们发现和Row属性是一致的,不再解释

Column({
    Key key,
    MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,
    MainAxisSize mainAxisSize = MainAxisSize.max,
    CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,
    TextDirection textDirection,
    VerticalDirection verticalDirection = VerticalDirection.down,
    TextBaseline textBaseline,
    List<Widget> children = const <Widget>[],
  })

学习内容来自Flutter从入门到实战

上一篇下一篇

猜你喜欢

热点阅读