Flutter-单个布局的组件(Align、Center、Padding、Container)

为实现界面各种布局的样式,采用很多组件的组合形成一个复杂的布局。说到flutter的离不开Widget,flutter的=布局也是使用Widget来完成的。
1.Align组件
先看一下Align的源码:

const Align({
  Key key,
  this.alignment: Alignment.center, 
  this.widthFactor, 
  this.heightFactor, 
  Widget child
})

alignment:对齐方式,默认居中对齐
widthFactor:宽度,不设置的情况,会尽可能大
heightFactor:高度,不设置的情况,会尽可能大
Widget child:要布局的子Widget(相当于控件)
widthFactor和heightFactor作用:
父组件中对齐的方式必须知道父组件的范围宽度和高度;
如果widthFactor和heightFactor不设置大小尽可能的占据父组件的整个视图;
设置一个值比如2,Align相当于子控件的3倍(可以代码调试看看效果)
示例:

class MyAlignBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Align(
      child: Icon(Icons.radar,size: 40,color: Colors.yellow,),
      alignment: Alignment.bottomCenter,
      widthFactor: 10,//可以看看更改这个两个值的大小
      heightFactor: 10,
    );
  }
}

widthFactor和heightFactor去掉就是默认的额效果。

2.Center组件
Center的翻译是居中,实际上Center也是继承Align,是将alignment设置为Alignment.center。
源码示例:

class Center extends Align {
  const Center({
    Key key,
    double widthFactor,
    double heightFactor,
    Widget child
  }) : super(key: key, widthFactor: widthFactor, heightFactor: heightFactor, child: child);
}

代码只需要把Align换成Center:

class MyCenterBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Icon(Icons.radar,size: 40,color: Colors.yellow,),
      widthFactor: 10,
      heightFactor: 10,
    );
  }
}

展示的是一个子控件在父控件的中间。

3.Padding组件
Padding很容易看出是边距在安卓和ios中,但是在flutter中是一个Widget,但是flutter中也没有这个样去管理,也可以设置外边距。通常是设置子widget和父widget的边距。我们用一个文本来设置:

class MypaddingBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: EdgeInsets.all(20),
      child: Text(
        "这是一个有边距的文本,学习一下是怎么设置的。",
        style: TextStyle(
            color: Colors.red,
            fontSize: 18
        ),
      ),
    );
  }
}

4.Container
Container在开发中使用的是非常多,常常作为容器。
源码示例:

Container({
  this.alignment,
  this.padding, 
  Color color,
  Decoration decoration,
  Decoration foregroundDecoration, 
  double height,
  BoxConstraints constraints,
  this.margin,
  this.transform, 
  this.child,
})

说明一点color和decoration是互斥的,当指定color时,Container内会自动创建一个decoration;(decoration前面已经介绍了)
代码示例(设置一个有背景的):

class MyContainerBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Container(
        child: Icon(Icons.radar, size: 32, color: Colors.white),
        color: Colors.blueAccent,
        width: 200,
        height: 200,
      ),
    );
  }
}

单个布局的还有很多的,可以自己进行学习,下一章简单的讲一下多布局的使用,简单的说就是单布局的各种组合。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值