A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

之前已经简单的学习了一下Container容器组件的用法,这节我们继续学习,主要讲解一下的padding,margin和decoration这几个属性。我们先来看看Padding属性。
padding属性
padding的属性就是一个内边距,它和你使用的前端技术CSS里的padding表现形式一样,指的是Container边缘和child内容的距离。先来看一个内边距为10的例子。具体代码如下(我们还是接着上节课的代码来写):
[AppleScript] 纯文本查看 复制代码
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代码就一句。
[AppleScript] 纯文本查看 复制代码
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,就可以用下面的代码来编写。
[AppleScript] 纯文本查看 复制代码
padding:const EdgeInsets.fromLTRB(10.0,30.0,0.0,0.0),

这时候我们的结果就变成了下图。
有了这两个属性,基本就可以满足我们的工作需要了。

margin属性
会了padding属性的设置,margin就变的非常容易了,因为方法基本上一样。不过margin是外边距,只的是container和外部元素的距离。
现在要把container的外边距设置为10个单位,代码如下:
[AppleScript] 纯文本查看 复制代码
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),
),

图中可以看出,已经有了明显的外边距。
当然你也可以分别设置不同的外边距,方法也是使用fromLTRB,我在视频中演示,这里就不累述了。

decoration属性
decoration是 container 的修饰器,主要的功能是设置背景和边框。
比如你需要给背景加入一个渐变,这时候需要使用BoxDecoration这个类,代码如下(需要注意的是如果你设置了decoration,就不要再设置color属性了,因为这样会冲突)。
[AppleScript] 纯文本查看 复制代码
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]
    )
  ),
),

上面的代码去掉了color的设置,这时候container的背景就变成了渐变颜色,如下图。
设置边框
设置边框可以在decoration里设置border属性,比如你现在要设置一个红色边框,宽度为2。代码如下:
[AppleScript] 纯文本查看 复制代码
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)
  ),
),

关键代码其实就是:
[AppleScript] 纯文本查看 复制代码
border:Border.all(width:2.0,color:Colors.red)

这时候就有了边框显示,我就不给大家上图片了,如果有需要视频中查看吧。
这节课就到这里,希望小伙伴们都能动手练习起来。在这里附上全部代码,方便小伙伴们学习。
[AppleScript] 纯文本查看 复制代码
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)
            ),
          ),
          ),
        ),
      );
  }
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马