添加 padding, margins, borders, background color, 或将其他装饰添加到widget.
注意:color 和decoration不能同时使用
Widget container = new Container(
constraints:BoxConstraints(minHeight: 20,minWidth: 20),
padding: const EdgeInsets.all(8.0),
margin: const EdgeInsets.all(8.0),
decoration: new BoxDecoration(color: Colors.teal.shade700,border:new Border.all(color:Colors.black,width: 5.0)),
//color: Colors.teal.shade700,
alignment: Alignment.center,
child: new Text('Hello World', style: Theme.of(context).textTheme.display1.copyWith(color: Colors.white)),
foregroundDecoration: new BoxDecoration(border: new Border.all(color: Colors.red,width: 5.0,style: BorderStyle.solid)),
transform: new Matrix4.rotationZ(0.1),);
一个widget,它可以将其子widget对齐,并可以根据子widget的大小自动调整大小。
Align align = new Align(
alignment: Alignment.center,
widthFactor: 2.0,
heightFactor: 2.0,
child: new Container(
width: 50,
height: 50,
alignment: Alignment.center,
color: Colors.green,
child: new Text("Align"),
),
);
一个widget, 会给其子widget添加指定的填充
padding 内边距
Widget padding = new Padding(
//EdgeInsets内部边缘设置
padding: EdgeInsets.all(8.0),
child: new Container(
child: const Card(
child: Text('hello word',style: TextStyle(fontSize: 18.0, color: Colors.red),),
),
),
);
将其子widget居中显示在自身内部的widget
按自己的大小调整其子widget的大小和位置。
BoxFit.contain
注意:
i :如果外部有约束的话,按照外部约束调整自身尺寸,然后缩放调整child,按照指定的条件进行布局;
ii:如果没有外部约束条件,则跟child尺寸一致,指定的缩放以及位置属性将不起作用。
Container fittedBox = new Container(
color: Colors.amberAccent,
width: 300.0,
height: 300.0,
child: new FittedBox(
fit: BoxFit.fill,
alignment: Alignment.topLeft,
child: new Container(
color: Colors.red,
child: new Text("FittedBox"),
),
),
);
一个widget,试图将子widget的大小指定为某个特定的长宽比
aspectRatio 设置比例
Widget re = new Container(
width: 100,
color: Colors.green,
child: new AspectRatio(aspectRatio: 1,child: new Text('Hello Word'),),
);
对其子项施加附加约束的widget
constraints 约束
最终红色区域被限制在50 x 50的大小
Widget re = new Container(
color: Colors.green,
child: new ConstrainedBox(
constraints: BoxConstraints.tightFor(width: 50,height: 50),
child: Container(width:200,height:200,color:Colors.red,child: const Text('Hello World!'))),
);
最终红色区域被限制在50 x 50的大小
根据子项的基线对它们的位置进行定位的widget。
i:alphabetic:对齐字符底部的水平线;
ii:ideographic:对齐表意字符的水平线。
Row baseLine = new Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
new Baseline(
baseline: 50.0,
baselineType: TextBaseline.alphabetic,
child: new Text(
'AiAiAi',
style: new TextStyle(
fontSize: 20.0,
textBaseline: TextBaseline.alphabetic,
),
),
),
new Baseline(
baseline: 50.0,
baselineType: TextBaseline.alphabetic,
child: new Container(
width: 30.0,
height: 30.0,
color: Colors.red,
),
),
new Baseline(
baseline: 50.0,
baselineType: TextBaseline.alphabetic,
child: new Text(
'xYxYxY',
style: new TextStyle(
fontSize: 50.0,
textBaseline: TextBaseline.alphabetic,
),
),
),
],
);
根据现有空间,来调整child的尺寸,(child就算设置了具体的尺寸数值,也不起作用。)
注:宽高因子默认为null,与父类的宽高一致
new Container(
color: Colors.blue,
height: 150.0,
width: 150.0,
padding: const EdgeInsets.all(10.0),
child: new FractionallySizedBox(
alignment: Alignment.topLeft,
widthFactor: 1.5,
heightFactor: 0.5,
child: new Container(
color: Colors.red,
),
),
)
IntrinsicHeight的作用是调整child到固定的高度。
Offstage的作用是通过一个参数,来控制child是否显示,日常使用中也算是比较常用的控件。
注意:当Offstage不可见的时候,如果child有动画,应该手动停掉,Offstage并不会停掉动画。
OverflowBox这个控件,允许child超出parent的范围显示,
其中,最小以及最大宽高度,如果为null的时候,就取父节点的constraint代替。
Container(
color: Colors.green,
width: 200.0,
height: 200.0,
padding: const EdgeInsets.all(5.0),
child: OverflowBox(
alignment: Alignment.topLeft,
maxWidth: 300.0,
maxHeight: 500.0,
child: Container(
color: Color(0x33FF00FF),
width: 400.0,
height: 400.0,
),
),
)
Transform的作用是在widgets中进行矩阵变换使用
Widget transform = Center(
child: Transform(
transform: Matrix4.rotationZ(0.3),
child: Container(
color: Colors.red,
width: 100.0,
height: 100.0,
),
),
);
new Text('Hello World', style: new TextStyle(fontSize: 32.0))
new Image.asset('images/myPic.jpg', fit: BoxFit.cover)
new Icon(Icons.star, color: Colors.red[500])