Flutter实战专题

Flutter基础篇之七-Row&Cloumn

2020-10-14  本文已影响0人  Michale_Zuo

Row是水平方向展示多个Widget集合的控件

Row
    MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start,// 主轴对齐方式
    MainAxisSize mainAxisSize = MainAxisSize.max,//主轴展示的区域
    CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center,//交叉轴对齐方式
    TextDirection textDirection,//文本方向
    List<Widget> children = const <Widget>[],//子容器
return Row(
      children: <Widget>[
        Text('hello world'),
        FlatButton(
          color: Colors.red,
          // textColor: Colors.amber,
          onPressed: (){},
          child: Text('click me'),
        ),
        Container(
          color: Colors.cyan,
          padding: EdgeInsets.symmetric(horizontal: 5, vertical: 2),
          child: Text('inside container'),
        )
      ],
    );
image.png
mainAxisAlignment:主轴(水平)对齐方式
crossAxisAlignment:交叉轴对齐方式
mainAxisSize:主轴展示区域大小

以横向多个控件为例说明

Column是垂直方向展示多个Widget集合的控件

    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>[],

Column的属性和Row的属性一致。区别在于,Column的主轴是垂直方向,交叉轴在水平方向,Column的布局方向是纵向的,可以类比Row理解各个属性。

实现九宫格

Row横向添加3个格子,在使用Column在纵向重复添加3次
注:读者可以自己使用另外一种(先纵向,在横向)实现9宫格,此文章不在赘述。

// 9宫格
class NineGrid extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      mainAxisSize: MainAxisSize.max,
      children: <Widget>[
        RowItem(),

        RowItem(),
        RowItem(),

      ],
    );
  }
}


class RowItem extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.spaceEvenly,
      children: [
        Container(
          width: 100,
          height: 100,
          child: RaisedButton(
            color: Colors.cyan,
            onPressed: (){},
            child: Text('icons1'),
          ),
        ),
        Container(
          width: 100,
          height: 100,
          child: RaisedButton(
            onPressed: (){},
            color: Colors.red,
            child: Text('icons2'),
          ),
        ),
        Container(
          width: 100,
          height: 100,
          child: RaisedButton(
            color: Colors.amber,
            onPressed: (){},
            child: Text('icons3'),
          ),
        ),
      ],
    );
  }
}

具体详情请查看demo

上一篇 下一篇

猜你喜欢

热点阅读