美文网首页
Flutter 线性布局 Row和Column

Flutter 线性布局 Row和Column

作者: 态度哥 | 来源:发表于2020-04-20 20:59 被阅读0次
新建项目-2.png
  1. Row:水平方向的线性布局
  2. Column:垂直方向的线性布局

Row 和 Column 都继承自弹性布局 Flex,其实就是确定了主轴方向的 Flex,其余的用法和 Flex 一致。

Row 水平布局

Row 可以在水平方向排列其 子widget。

Row({
    Key key,
    MainAxisAlignment mainAxisAlignment = MainAxisAlignment.start, //在主轴的对齐方式
    MainAxisSize mainAxisSize = MainAxisSize.max,  //表示主轴应该占用多大的空间
    CrossAxisAlignment crossAxisAlignment = CrossAxisAlignment.center, //在垂直方向上,子widget的对齐方式,整体偏移
    TextDirection textDirection,  //在水平方向上,子widget的排列方向
    VerticalDirection verticalDirection = VerticalDirection.down,
    TextBaseline textBaseline, //排列 子Widget 时使用哪个基线
    List<Widget> children = const <Widget>[],
  })

1. mainAxisAlignment 水平方向widget对齐方式

// 在水平方向上,子widget的对齐方式,是整体位置的偏移,靠左,居中,靠右等。只有当MainAxisSIze.max时才有意义
// mainAxisAlignment: MainAxisAlignment.start,  // 如果是TextDirection.ltr则是左对齐,rtl是右对齐
enum MainAxisAlignment {
  start,       // 如果是TextDirection.ltr则是左对齐,rtl是右对齐
  end,         // 如果是TextDirection.ltr则是右对齐,rtl是左对齐
  center,      // 居中对齐
  spaceBetween,// 屏幕与子widget之间不留空隙,子widget之间距离相等
  spaceAround, // 屏幕与子widget之间留一定空隙,子widget之间距离相等
  spaceEvenly, // 屏幕与子widget之间,子widget之间距离相等
}
RichText(
  text: TextSpan(
    children: <TextSpan>[
      TextSpan(
        text: "MainAxisAlignment.spaceEvenly\n",
        style: TextStyle(fontSize: 20,color: Colors.blue)
      ),
      TextSpan(
          text: "屏幕与子widget之间,子widget之间距离相等",
          style: TextStyle(fontSize: 15,color: Colors.blueGrey)
      ),
    ]
  ),
),
Container(
  color: Colors.amber,
  height: 150,
  child: Row(
    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
    children: <Widget>[
      Text(
        "Row1",
        style: TextStyle(
            fontSize: 20,
            color: Colors.blue
        ),
      ),
      Image.network(
        "https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=4032780575,3204528048&fm=26&gp=0.jpg",
        width: 100,
        height: 100,
      ),
      Text(
        "Row2",
        style: TextStyle(
            fontSize: 20,
            color: Colors.blue
        ),
      ),
      Image.network(
        "https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=1063547563,2289391090&fm=26&gp=0.jpg",
        width: 100,
        height: 100,
      ),
    ],
  ),
),
image.png image.png image.png image.png image.png image.png

2. mainAxisSize 表示主轴应该占用多大的空间

image.png image.png

3. crossAxisAlignment 在垂直方向上,子widget的对齐方式

这里记住 start、end、center 就可以

image.png image.png image.png image.png

4. textDirection

textDirection: TextDirection.ltr,//从左到右
textDirection: TextDirection.rtl,//从右到左
image.png image.png

5. verticalDirection 垂直方向的排列顺序

verticalDirection: VerticalDirection.up,  // 从下往上
verticalDirection: VerticalDirection.down,// 从上往下
image.png image.png

6. children 添加子视图组

Column

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

可以看到和row是一样的.只是方向是垂直的.

相关文章

网友评论

      本文标题:Flutter 线性布局 Row和Column

      本文链接:https://www.haomeiwen.com/subject/myqsihtx.html