美文网首页Flutter
02. Container 容器组件

02. Container 容器组件

作者: A君小红红 | 来源:发表于2020-05-31 21:05 被阅读0次

    Container(容器控件)在Flutter是经常使用的控件,它就相当于我们HTML里的<div>标签,每个页面或者说每个视图都离不开它。那这节课我们就来学习一下。
    ### Alignment属性

    其实容器的作用就是方便我们进行布局的,Flutter这点也作的很好,我们先来看容器属性中的Alignment

    这个属性针对的是Container内child的对齐方式,也就是容器子内容的对齐方式,并不是容器本身的对齐方式。

    import 'package:flutter/material.dart';
    void main () => runApp(MyApp());
    
    class MyApp extends StatelessWidget{
      @override
      Widget build(BuildContext context ){
          return MaterialApp(
            title:'Text widget',
            home:Scaffold(
              body:Center(
               child:Container(
                 child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
                 alignment: Alignment.center,
               ),
              ),
            ),
          );
      }
    }
    

    这时候可以看见,我们的文本已经居中显示在手机屏幕上了。当然它的对齐方式还有如下几种:

    bottomCenter:下部居中对齐。
    botomLeft: 下部左对齐。
    bottomRight:下部右对齐。
    center:纵横双向居中对齐。
    centerLeft:纵向居中横向居左对齐。
    centerRight:纵向居中横向居右对齐。
    topLeft:顶部左侧对齐。
    topCenter:顶部居中对齐。
    topRight: 顶部居左对齐。

    设置宽、高和颜色属性是相对容易的,只要在属性名称后面加入浮点型数字就可以了,比如要设置宽是500,高是400,颜色为亮蓝色。代码如下:

    child:Container(
      child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
      alignment: Alignment.center,
      width:500.0,
      height:400.0,
      color: Colors.lightBlue,
    ),
    

    ### padding属性

    padding的属性就是一个内边距,它和你使用的前端技术CSS里的padding表现形式一样,指的是Container边缘和child内容的距离。先来看一个内边距为10的例子。具体代码如下(我们还是接着上节课的代码来写):

    child:Container(
      child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
      alignment: Alignment.topLeft,
      width:500.0,
      height:400.0,
      color: Colors.lightBlue,
      padding:const EdgeInsets.all(10.0),
    ),
    

    padding:const EdgeInsets.all(10.0),
    这句的意思是设置Container的内边距是10,左右上下全部为10,这看起来非常容易。那我们再加大一点难度。如果上边距为30,左边距为10,这时候EdgeInsets.all()就满足不了我们了。

    ** EdgeInsets.fromLTRB(value1,value2,value3,value4)**

    我们用EdgeInsets.fromLTRB(value1,value2,value3,value4) 可以满足我们的需求,LTRB分别代表左、上、右、下。

    那我们设置上边距为30,左边距为10,就可以用下面的代码来编写。

    padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),
    

    ### margin属性

    会了padding属性的设置,margin就变的非常容易了,因为方法基本上一样。不过margin是外边距,只的是container和外部元素的距离。

    现在要把container的外边距设置为10个单位,代码如下:

    child:Container(
      child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
      alignment: Alignment.topLeft,
      width:500.0,
      height:400.0,
      color: Colors.lightBlue,
      padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),
      margin: const EdgeInsets.all(10.0),
    ),
    
    

    ### decoration属性

    decoration是 container 的修饰器,主要的功能是设置背景和边框。

    比如你需要给背景加入一个渐变,这时候需要使用BoxDecoration这个类,代码如下(需要注意的是如果你设置了decoration,就不要再设置color属性了,因为这样会冲突)。

    child:Container(
      child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
      alignment: Alignment.topLeft,
      width:500.0,
      height:400.0,
      padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),
      margin: const EdgeInsets.all(10.0),
      decoration:new BoxDecoration(
        gradient:const LinearGradient(
          colors:[Colors.lightBlue,Colors.greenAccent,Colors.purple]
        )
      ),
    ),
    

    设置边框

    设置边框可以在decoration里设置border属性,比如你现在要设置一个红色边框,宽度为2。代码如下:

    child:Container(
      child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
      alignment: Alignment.topLeft,
      width:500.0,
      height:400.0,
      padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),
      margin: const EdgeInsets.all(10.0),
      decoration:new BoxDecoration(
        gradient:const LinearGradient(
          colors:[Colors.lightBlue,Colors.greenAccent,Colors.purple]
        ),
        border:Border.all(width:2.0,color:Colors.red)
      ),
    ),
    
    import 'package:flutter/material.dart';
    void main () => runApp(MyApp());
    
    class MyApp extends StatelessWidget{
      @override
      Widget build(BuildContext context ){
          return MaterialApp(
            title:'Text widget',
            home:Scaffold(
              body:Center(
              child:Container(
                child:new Text('Hello JSPang',style: TextStyle(fontSize: 40.0),),
                alignment: Alignment.topLeft,
                width:500.0,
                height:400.0,
                padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),
                margin: const EdgeInsets.all(10.0),
                decoration:new BoxDecoration(
                  gradient:const LinearGradient(
                    colors:[Colors.lightBlue,Colors.greenAccent,Colors.purple]
                  ),
                  border:Border.all(width:2.0,color:Colors.red)
                ),
              ),
              ),
            ),
          );
      }
    }
    

    相关文章

      网友评论

        本文标题:02. Container 容器组件

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