Flutter Column


简介

Column 是一个将其child显示在竖直方向数组的widget,于Row相对

  • 将其child填充可用的竖直水平空间,默认竖直空间无法滚动,如有很多children,竖直空间饱和无法放置,你可以使用listView搭配使用
  • 如果你只有一个child,只需要使用对齐(Align)或者居中(Center)来展示child

基本用法

竖直布局,设置位置对齐方式

mainAxisSize 属性

  • 一行的高度是有mainAxisSize属性控制,默认是max

mainAxisAlignment属性

  • 将children放置在主轴某位置

CrossAxisAlignment 属性

  • crossAxisAlignment: crossAxisAlignment.center/end/start,
  • 即,根据设定的位置交叉对齐

实例演示

class ColumnDefault extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      /// - MainAxisAlignment.spaceEvenly/spaceAround/spaceBetween,
      ///  - spaceEvenly:将主轴方向空白区域均分,使得children之间空间相等,包括首尾childre
      ///  - spaceAround:将主轴方向空白区域均分,使得children之间空间相等,但是首尾childre的空白部分为一半
      ///  - spaceBetween:将主轴方向空白区域均分,使得children之间空间相等,但是首尾childre靠近收尾,没有空细逢

      ///  - MainAxisAlignment.start/end/center,
      ///  - start:将children放置在主轴起点方向
      ///  - end:将children放置在主轴末尾方向
      ///  - center:将children放置在主轴中间方向

      mainAxisAlignment: MainAxisAlignment.center,

      /// > mainAxisSize 属性
      ///   - 一行的高度是有mainAxisSize属性控制,默认是max
      ///  - mainAxisSize: MainAxisSize.min,一行的宽度是child传入的约束
      /// - mainAxisSize: MainAxisSize.max,一行的宽度的最大宽度是传入的约束。
      ///  > mainAxisAlignment属性

      /// mainAxisSize: MainAxisSize.max,
      ///-  crossAxisAlignment: CrossAxisAlignment.center/end/start,
      ///   - 即,根据设定的位置交叉对齐
      ///  - center/end/start: children在交叉轴上居中/末端/起点 对齐展示
      ///   - stretch:让children填满交叉轴方向
      ///  - baseline:在交叉轴方向,使得于这个baseline对齐,如果主轴是垂直的,那么这个值是当作开始

      children: <Widget>[
        Container(
          color: Color(0xfffce4ec),
          width: 90.0,
          height: 50.0,
        ),
        Container(
          color: Color(0xfff8bbd0),
          width: 90.0,
          height: 50.0,
        ),
        Container(
          color: Color(0xfff48fb1),
          width: 90.0,
          height: 50.0,
        ),
        Container(
          color: Color(0xfff06292),
          width: 90.0,
          height: 50.0,
        ),
        Text('We move under cover and we move as one'),
        Text('Through the night, we have one shot to live another day'),
        Text('We cannot let a stray gunshot give us away'),
        Text('We will fight up close, seize the moment and stay in it'),
        Text('It’s either that or meet the business end of a bayonet'),
        Text('The code word is ‘Rochambeau,’ dig me?'),
        Text('Rochambeau!',
            style:
                DefaultTextStyle.of(context).style.apply(fontSizeFactor: 1.0)),
      ],
    );
  }
}