Flutter 布局练习之Container组件

2019/12/24 18:9:5 | 阅2309 来源:好空间网络 [打印] [关闭]
 

import 'package:flutter/material.dart';

void main(){
  runApp(MyApp());
}

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return MaterialApp(
      title: "多窗口切换标题",
      home: Scaffold(
        appBar: AppBar(title: Text("布局练习"),),
        body: MyContainer(),
      ),
    );
  }
}


class MyContainer extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Container(
      color: Color(0xffff4400),
    //  child: Text("我是一个Container容器"),
    );
  }
}


1:默认情况下他是会铺满父元素,这里只给个color,看看效果



2.png


2:设置了高度和宽度,也设置了子元素的对齐方式


Container(
      width:300,//宽度
      height:300,//高度
      color: Color(0xffff4400),//背景颜色     
      alignment:Alignment.center,//子组件的对齐方式
     child: Text("我是一个Container容器",style: TextStyle(color: Color(0xffffffff),fontSize: 20),),
    );


效果图:


2.png


3:设置 decoration属性,他需要New BoxDecoration实例 由于这个里面的参数比较多,我打算把他做为2次来讲解,主要依据能否展现效果来决定写那些参数

在罗索下:

shape: BoxShape.circle 则为圆形,我看视频里很多老师都在设置高度后用圆角来实现,实在是多此一举,

 Center(
      child: Container(
              width:300,//宽度
              height:300,//高度
              //color: Color(0xffff4400),//背景颜色     
              alignment:Alignment.center,//子组件的对齐方式              
              decoration:new BoxDecoration(
                // this.color, // 底色
                // this.image, // 图片
                // this.border, 边色
                // this.borderRadius, // 圆角度
                // this.boxShadow, // 阴影
                // this.gradient, // 渐变
                // this.backgroundBlendMode, // 混合Mode
                // this.shape = BoxShape.rectangle,  // 形状
                border: new Border.all(color: Color(0xFFFF0000), width: 5), // 边色与边宽度
                color: Color(0xffff4400),//背景颜色
                //borderRadius: new BorderRadius.circular((20.0)), // 圆角度
                borderRadius: new BorderRadius.vertical(top: Radius.elliptical(20, 50)), // 也可控制上面或下面单个圆角大小
                // 生成阴影,阴影位置由offset决定(x,y),阴影模糊层度由blurRadius大小决定(大就更透明更扩散),阴影模糊大小由spreadRadius决定,这里可以生成多重阴影直接在BoxShadow后面在增加和BoxShadow即可
                boxShadow: [BoxShadow(color: Color(0x99FFFF00), offset: Offset(15.0, 15.0),    blurRadius: 10.0, spreadRadius: 2.0)],
                shape: BoxShape.rectangle //设置container的形状为圆形,默认为矩形,BoxShape.circle为圆形 注意这个和 borderRadius 参数互斥不能同事使用,因为圆没有圆角可设置
                
                
              ), //实现边框、圆角、阴影、形状、渐变、背景图像
              child: Text("我是一个Container容器",style: TextStyle(color: Color(0xffffffff),fontSize: 20),),
            ),
      );

效果图:


2.png



4:渐变和背景图片

通过这个我发现很容易就可以在图片上面写上文字....

Container(
              width:300,//宽度
              height:300,//高度
              //color: Color(0xffff4400),//背景颜色     
              alignment:Alignment.center,//子组件的对齐方式              
              decoration:new BoxDecoration(
                // this.color, // 底色
                // this.image, // 图片
                // this.border, 边色
                // this.borderRadius, // 圆角度
                // this.boxShadow, // 阴影
                // this.gradient, // 渐变
                // this.backgroundBlendMode, // 混合Mode
                // this.shape = BoxShape.rectangle,  // 形状
                border: new Border.all(color: Color(0xFFFF0000), width: 5), // 边色与边宽度
                //color: Color(0xffff4400),//背景颜色
                //borderRadius: new BorderRadius.circular((20.0)), // 圆角度
                //borderRadius: new BorderRadius.vertical(top: Radius.elliptical(20, 50)), // 也可控制上面或下面单个圆角大小
                // 生成阴影,阴影位置由offset决定(x,y),阴影模糊层度由blurRadius大小决定(大就更透明更扩散),阴影模糊大小由spreadRadius决定,这里可以生成多重阴影直接在BoxShadow后面在增加和BoxShadow即可
                boxShadow: [BoxShadow(color: Color(0x99FFFF00), offset: Offset(15.0, 15.0),    blurRadius: 10.0, spreadRadius: 2.0)],
                shape: BoxShape.rectangle, //设置container的形状为圆形,默认为矩形,BoxShape.circle为圆形 注意这个和 borderRadius 参数互斥不能同事使用,因为圆没有圆角可设置
                
                // 环形渲染 radius:1 中心到边框是1 输入1为从中心渲染到边框,本人英文不好不知道理解的对不对
                gradient: RadialGradient(colors: [Color(0xFFFFFF00), Color(0xFF00FF00), Color(0xFF00FFFF)],radius: 1, tileMode: TileMode.mirror),
                //扫描式渐变
                //  gradient: SweepGradient(colors: [Color(0xFFFFFF00), Color(0xFF00FF00), Color(0xFF00FFFF)], startAngle: 0.0, endAngle: 1*3.14),
                // 线性渐变
                //  gradient: LinearGradient(colors: [Color(0xFFFFFF00), Color(0xFF00FF00), Color(0xFF00FFFF)], begin: FractionalOffset(1, 0), end: FractionalOffset(0, 1)),


                //背景图片 更多的方法可以看我写的图片练习
                image: new DecorationImage(
                    image: new NetworkImage('http://www.jspkongjian.com/images/logo180.70.png'), // 网络图片
                    // image: new AssetImage('graphics/background.png'), 本地图片
                    fit: BoxFit.fill // 填满
                    //centerSlice: new Rect.fromLTRB(270.0, 180.0, 1360.0, 730.0),// 固定大小                   
                )



              ), //实现边框、圆角、阴影、形状、渐变、背景图像
              child: Text("我是一个Container容器",style: TextStyle(color: Color(0xffffffff),fontSize: 20),),
            ),

效果图:


image.png

经营许可证ICP:皖B2-20100052 公司邮箱:zcdnsz@jspkongjian.net
Copyright © 2004-2015, 安徽好空间网络科技有限公司 版权所有 , 本站素材部分来源于网络,如有侵权请告知删除。