微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter之Container

1、Container介绍

我们先看它的构造方法

  Container({
    Key key,this.alignment,this.padding,//容器内补白,属于decoration的装饰范围
    Color color,// 背景色
    decoration decoration,// 背景装饰
    decoration foregrounddecoration,//前景装饰
    double width,//容器的宽度
    double height,//容器的高度
    BoxConstraints constraints,//容器大小的限制条件
    this.margin,//容器外补白,不属于decoration的装饰范围
    this.transform,//变换
    this.child,this.clipBehavior = Clip.none,})

Container是一个组合类容器,它本身不对应具体的RenderObject,它是DecoratedBox、ConstrainedBox、Transform、Padding、Align等组件组合的一个功能容器,所以我们只需通过一个Container组件可以实现同时需要装饰、变换、限制的场景

 

 

 

 

 

 

 

 

2、代码测试

代码测试1、

  @override
  Widget build(BuildContext context) {
      return MaterialApp(
          title: 'open url',home: Scaffold(
            appBar: AppBar(
              title: Text('hello Flutter'),),body: Container(
               margin: EdgeInsets.only(top: 50,left: 50),constraints: BoxConstraints.tightFor(width: 200,height: 150),decoration: Boxdecoration(
                    gradient: RadialGradient( //背景径向渐变
                        colors: [Colors.red,Colors.orange],center: Alignment.topLeft,radius: .98
                    ),borderRadius:BorderRadius.all(Radius.circular(5)),BoxShadow: [ //卡片阴影
                      BoxShadow(
                          color: Colors.black54,offset: Offset(2.0,2.0),blurRadius: 4.0
                      )
                    ]
               ),alignment: Alignment.center,child: Text("chenyu",style: TextStyle(color: Colors.white,fontSize: 40.0)),);
  }

代码测试2、

    @override
  Widget build(BuildContext context) {
      return MaterialApp(
          title: 'open url',body: Padding(
              padding: EdgeInsets.all(30),child: DecoratedBox(
                decoration: Boxdecoration(
                   color: Colors.blue
                ),)
          ),);
  }

代码测试3、

    @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'open url',home: Scaffold(
          appBar: AppBar(
            title: Text('hello Flutter'),body: DecoratedBox(
            decoration: Boxdecoration(
              color: Colors.blue
            ),child: Padding(
               padding: EdgeInsets.all(40),);
  }

代码测试4、

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'open url',body: Column(
            mainAxisSize: MainAxisSize.min,children: <Widget>[
              Text("chenyu1"),Text("chenyu2"),Container(
                margin: EdgeInsets.all(20),color: Colors.red,child: Text("chenyu3",style: TextStyle(fontSize: 40,color: Colors.white)),Container(
                padding: EdgeInsets.all(20),child: Text("chenyu4",],);
  }

 

 

 

 

 

 

 

 

3、运行结果

 

 

 

 

 

 

 

4、总结

Container(
  margin: EdgeInsets.all(20.0),//容器外补白
  color: Colors.orange,child: Text("Hello World!"),Container(
  padding: EdgeInsets.all(20.0),//容器内补白
  color: Colors.orange,

等价下面的代码

Padding(
  padding: EdgeInsets.all(20.0),child: DecoratedBox(
    decoration: Boxdecoration(color: Colors.orange),DecoratedBox(
  decoration: Boxdecoration(color: Colors.orange),child: Padding(
    padding: const EdgeInsets.all(20.0),

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐