最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container

    正文概述 掘金(弗拉德)   2020-12-28   351

    作者 | 弗拉德
    来源 | 弗拉德(公众号:fulade_me)

    Container

    我们先来看一下Container初始化的参数:

      Container({
        Key key,
        // 位置 居左、居右、居中
        this.alignment, 
        // EdgeInsets Container的内边距
        this.padding,
        // 背景颜色  
        this.color,
        // 背景装饰器
        this.decoration,
        // 前景装饰器
        this.foregroundDecoration,
        // 宽度
        double width,
        // 告诉
        double height,
        // 约束
        BoxConstraints constraints,
        // EdgeInsets Container的外边距
        this.margin,
        // 旋转
        this.transform,
        // 子控件
        this.child,
        // 裁剪Widget的模式 
        this.clipBehavior = Clip.none,
      }) 
    

    注意:

    • Containercolor属性与属性 decorationcolor存在冲突,如果两个color都做了设置,默认会以decorationcolor为准。
    • 如果我们没有给Container设置widthheightContainer会跟child的大小一样;假如我们没有设置child的时候,它的尺寸会极大化,尽可能的充满它的父Widget

    1. 最简单的Container

    Container(
        child: Text("Fulade"),
        color: Colors.red,
    )
    

    Container接收一个child参数,我们可以传入Text作为child参数,然后传入是一个颜色。
    【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container

    2. Padding

    Container(
        child: Text("Pading 10"),
        padding: EdgeInsets.all(10),
        color: Colors.blue,
    )
    

    Padding是内边距,我们在这里设置了padding: EdgeInsets.all(10),也就是说Text距离Container的四条边的边距都是10。
    【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container

    3. Margin

    Container(
        child: Text("Margin 10"),
        margin: EdgeInsets.all(10),
        color: Colors.green,
    )
    

    Margin是外边距,我们在这里设置了margin: EdgeInsets.all(10)Container在原有大小的基础上,又被包围了一层宽度为10的矩形。 需要注意,绿色外围的白色区域也是属于Container的一部分。
    【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container

    4. transform

    Container(
        padding: EdgeInsets.symmetric(horizontal: 15),
        margin: EdgeInsets.all(10),
        child: Text("transform"),
        transform: Matrix4.rotationZ(0.1),
        color: Colors.red,
    )
    

    transform可以帮助我们做旋转,Matrix4给我们提供了很多的变换样式。 【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container

    5. decoration decoration可以帮助我们实现更多的效果。例如形状、圆角、边界、边界颜色等。

    Container(
        child: Text("Decoration"),
        padding: EdgeInsets.symmetric(horizontal: 15),
        margin: EdgeInsets.all(10),
        decoration: BoxDecoration(
            color: Colors.red,
            shape: BoxShape.rectangle,
            borderRadius: BorderRadius.all(Radius.circular(5)),
        ),
    )
    

    【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container
    这里就是设置了一个圆角的示例,同样我们对BoxDecorationcolor属性设置颜色,对整个Container的也是有效的。

    6. 显示 Image

    Container(
        height: 40,
        width: 100,
        margin: EdgeInsets.all(10),
        decoration: BoxDecoration(
            image: DecorationImage(
                    image: AssetImage("images/flutter_icon_100.png"),
                    fit: BoxFit.contain,
                ),
        ),
    )
    

    BoxDecoration可以传入一个Image对象,这样就灵活了很多,Image可以来自本地也可以来自网络。
    【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container

    7. Border

    Container(
        child: Text('BoxDecoration with border'),
        padding: EdgeInsets.symmetric(horizontal: 15),
        margin: EdgeInsets.all(5),
        decoration: BoxDecoration(
            borderRadius: BorderRadius.circula(12),
            border: Border.all(
                color: Colors.red,
                width: 3,
            ),
        ),
    )
    

    使用border可以帮助我们做边界效果,还可以设置圆角borderRadius,也可以设置border的宽度,颜色等。
    【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container

    8. 渐变色

    Container(
        padding: EdgeInsets.symmetric(horizontal: 20),
        margin: EdgeInsets.all(20), //容器外填充
        decoration: BoxDecoration(
            gradient: RadialGradient(
                colors: [Colors.blue, Colors.black, Colors.red],
                center: Alignment.center,
                radius: 5
            ),
        ),
        child: Text(
            //卡片文字
            "RadialGradient",
            style: TextStyle(color: Colors.white),
        ),
    )
    

    BoxDecoration的属性gradient可以接收一个颜色的数组,Alignment.center是渐变色开始的位置,可以从左上角右上角中间等位置开始颜色变化。

    【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container

    想体验以上的Container的示例的运行效果,可以到我的Github仓库项目flutter_app->lib->routes->container_page.dart查看,并且可以下载下来运行并体验。


    起源地下载网 » 【Flutter 1-16】Flutter手把手教程UI布局和Widget——容器控件Container

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元