单个组件的容器
Align
- 用于在父组件内对齐子组件的位置
Align(
alignment: Alignment.bottomRight,
child: Container(
width: 50,
height: 50,
color: Colors.blue,
),
),
Container
Container(
width: 200,
height: 200,
color: Colors.blue,
margin: const EdgeInsets.all(4.0),
padding: const EdgeInsets.all(4.0),
child: null,
)
Center
- 用于将子组件居中对齐在父组件中
Center(
child: Container(
width: 100,
height: 100,
color: Colors.blue,
),
),
ClipRRect
ClipRRect(
borderRadius: BorderRadius.circular(10.0),
child: Image.asset(
'assets/images/image.jpg',
width: 200,
height: 200,
fit: BoxFit.cover,
),
),
- 用于裁剪其子组件的显示范围
- ClipOval:子组件为正方形时剪裁成内贴圆形;为矩形时,剪裁成内贴椭圆
- ClipRRect:将子组件剪裁为圆角矩形
- ClipRect:默认剪裁掉子组件布局空间之外的绘制内容
- ClipPath:按照自定义的路径剪裁
ConstrainedBox
- ConstrainedBox 作为 Container 的父级组件,对 Container 进行约束
- 通过设置 constraints 属性为 BoxConstraints,限制了容器的宽高
ConstrainedBox(
constraints: BoxConstraints(
minWidth: 100.0,
maxWidth: 200.0,
minHeight: 50.0,
maxHeight: 100.0,
),
child: null,
);
DecoratedBox
- 给子组件绘制一些装饰,如背景、边框、渐变等
DecoratedBox(
decoration: BoxDecoration(
gradient: LinearGradient(colors:[Colors.red,Colors.orange.shade700]), //背景渐变
borderRadius: BorderRadius.circular(3.0), //3像素圆角
boxShadow: [ //阴影
BoxShadow(
color:Colors.black54,
offset: Offset(2.0,2.0),
blurRadius: 4.0
)
]
),
child: null,
)
Expanded
- 用于弹性布局的容器中的子部件
Expanded(
flex: 1,
child: null,
)
FittedBox
Container(
width: 100,
height: 100,
color: Colors.blue,
child: FittedBox(
fit: BoxFit.contain, child: Row(children: [Text('x' * 30)])),
),
- 用于调整其子组件的大小以适应给定的约束条件
LayoutBuilder
LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
return Container(
width: constraints.maxWidth * 0.5,
height: constraints.maxHeight * 0.5,
color: Colors.blue,
);
},
),
- 可以在布局过程中拿到父组件传递的约束信息,然后根据约束信息动态的构建不同的布局
Padding
Padding(
padding: EdgeInsets.all(16.0), // 设置内边距为16.0
child: null,
)
SizeBox
SizedBox(
width: 200.0,
height: 100.0,
child: null,
);
- SizedBox 用于指定固定尺寸,可以设置宽高的固定值
SingleChildScrollView
SingleChildScrollView(
physics: const BouncingScrollPhysics(),
child:null
);
Transform
变换
Container(
color: Colors.black,
child: Transform(
alignment: Alignment.topRight, //相对于坐标系原点的对齐方式
transform: Matrix4.skewY(0.3), //沿Y轴倾斜0.3弧度
child: Container(
padding: const EdgeInsets.all(8.0),
color: Colors.deepOrange,
child: const Text('Apartment for rent!'),
),
),
)
平移
DecoratedBox(
decoration:BoxDecoration(color: Colors.red),
//默认原点为左上角,左移20像素,向上平移5像素
child: Transform.translate(
offset: Offset(-20.0, -5.0),
child: Text("Hello world"),
),
)
旋转
DecoratedBox(
decoration: BoxDecoration(color: Colors.red),
child: Transform.rotate(
//旋转90度
angle: 90,
child: Text("Hello world"),
),
)
缩放
DecoratedBox(
decoration:BoxDecoration(color: Colors.red),
child: Transform.scale(
scale: 1.5, //放大到1.5倍
child: Text("Hello world")
)
);
UnconstrainedBox
UnconstrainedBox(
child: Container(
width: 200.0,
height: 100.0,
color: Colors.blue,
child: null,
),
);
- UnconstrainedBox 用于取消约束限制,允许子组件自由调整大小