【Flutter】十二、Flutter中常用的布局容器——Row、Column

【Flutter】十二、Flutter中常用的布局容器——Row、Column

一、Row

继承自Flex。可将children中的widget在水平方向上进行排列。与css的flex(flex-direction:row;)布局相似

1.1 构造函数

Row({
    Key key,
    MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, // 主轴对齐方式(水平方向)
    MainAxisSize mainAxisSize = MainAxisSize.max, // 主轴间距大小
    CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center, // 副轴对齐方式(垂直方向)
    TextDirection textDirection, // 水平方向:ltr从左向右;rtl从右向左
    VerticalDirection verticalDirection = VerticalDirection.down, // 竖直方向
    TextBaseline textBaseline,
    List<Widget> children = const <Widget>[],
  }) 

示例代码

import 'package:flutter/material.dart';

class RowDemo extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Row(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      crossAxisAlignment: CrossAxisAlignment.start,
      mainAxisSize: MainAxisSize.max,
      textDirection: TextDirection.ltr,
      verticalDirection: VerticalDirection.down,
      textBaseline: TextBaseline.ideographic,
      children: <Widget>[
        Container(
          width: 80.0,
          height: 200.0,
          color: Colors.cyanAccent,
        ),
        Container(
          width: 80.0,
          color: Colors.red,
        ),
        Container(
          width: 80.0,
          height: 170.0,
          color: Colors.green,
        ),
        Container(
          width: 80.0,
          height: 600.0,
          color: Colors.orange,
        ),
      ],
    );
  }
}

1.mainAxisAlignment
    该属性决定了主轴方向上的对齐方式,可能的值有(当设置mainAxisSize为MainAxisSize.min时,以下间隔会消失):

mainAxisAlignment值说明效果
MainAxisAlignment.star从开始位置开始,textDirection若为TextDirection.rtl则为右对齐在这里插入图片描述
MainAxisAlignment.end从结束位置开始,textDirection若为TextDirection.rtl则为左对齐在这里插入图片描述
MainAxisAlignment.center居中在这里插入图片描述
MainAxisAlignment.spaceBetween两侧对齐在这里插入图片描述
MainAxisAlignment.spaceAround相邻子组件的间隔是左右两侧控件距离边缘的两倍在这里插入图片描述
MainAxisAlignment.spaceEvenly相邻间隔平均分配          在这里插入图片描述

2.crossAxisAlignment
    该属性决定了在副轴(竖直)方向上的对齐方式,可能的值有以下:

crossAxisAlignment说明效果
CrossAxisAlignment.center默认值,竖直方向居中       在这里插入图片描述
CrossAxisAlignment.start顶部对齐,若verticalDirection为VerticalDirection.up效果为底部对齐在这里插入图片描述
CrossAxisAlignment.end与CrossAxisAlignment.start相反在这里插入图片描述
CrossAxisAlignment.stretch填充满高度,children中的控件高度失效在这里插入图片描述
CrossAxisAlignment.baseline如果主轴是竖直的,效果与CrossAxisAlignment.start一样在这里插入图片描述

二、Column

同样继承自Flex。children中的widget会在竖直方向上进行排列。相关属性与Row类似,只不过Column的主轴是竖直方向,副轴为水平方向

import 'package:flutter/material.dart';

class ColumnDemo extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Column(
      mainAxisSize: MainAxisSize.max,
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      crossAxisAlignment: CrossAxisAlignment.center,
      textDirection: TextDirection.rtl,
      verticalDirection: VerticalDirection.down,
      children: <Widget>[
        Container(
          height: 100.0,
          width: 90.0,
          color: Colors.redAccent,
        ),
        Container(
          height: 100.0,
          width: 190.0,
          color: Colors.purpleAccent,
        ),
        Container(
          height: 100.0,
          color: Colors.cyanAccent,
        ),
        Container(
          height: 100.0,
          width: 200.0,
          color: Colors.greenAccent,
        ),
        Container(
          height: 100.0,
          width: 290.0,
          color: Colors.yellow,
        ),
      ],
    );
  }
}

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MAXLZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值