Wigets学习之Container
时间:2021-06-24 01:43:37
Container → div(HTML)
一个设置基本样式大小的容器部件
child
:子部件height
: 高度width
:宽度padding
: 内边距margin
:外边距color
:背景色transform
:容器变换,类似于Css
中的transform
transformAlignment
:变换的对齐方式decoration
:装饰容器,指定此参数则不能指定color
参数,是一个BoxDecoration
类型alignment
:容器中的子部件对齐方式,指定此参数则必须指定decoration
参数constraints
: 创建一个装饰部件,指定此参数则不能指定color
和decoration
参数
注意:Container 如果设置宽高无效的话,是因为 Container 计算宽高时需要考虑到父部件的尺寸约束(
BoxConstraints
),BoxConstraints
有四个参数:minWidth
、maxWidth
、minHeight
、maxHeight
。当宽高不在constraints
范围内时则会强制计算符合constraints
要求的值,而不再使用设置的宽高。可以使用Row
或Column
部件包裹。
BoxDecoration
color
:背景色image
: 背景图border
: 边框borderRadius
:圆角gradient
:渐变背景
import 'package:flutter/material.dart';
void main() {
runApp(App());
}
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(
child: Container(
height: 400,
width: 400,
padding: EdgeInsets.only(top: 40, left: 20),
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(50)),
image: DecorationImage(
image: NetworkImage(
'https://img2.baidu.com/it/u=2969910583,3071772098&fm=26&fmt=auto&gp=0.jpg')),
color: Colors.yellow,
gradient: LinearGradient(colors: [Colors.red.shade400, Colors.blue]),
border: Border.all(width: 2, color: Colors.white),
boxShadow: [BoxShadow(color: Colors.green, blurRadius: 50)]),
child: Text(
'Hello Fluter',
textDirection: TextDirection.ltr,
),
),
);
}
}
Center
使子部件居中对齐
child
:子部件widthFactor
:宽度因子,不设置则子部件为默认大小heightFactor
:高度度因子,不设置则子部件为默认大小
import 'package:flutter/material.dart';
void main() {
runApp(App());
}
class App extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Row(
textDirection: TextDirection.ltr,
children: [
Center(
widthFactor: 2,
child: Container(
color: Colors.cyan,
child: Text(
'Hello Flutter',
textDirection: TextDirection.ltr,
),
),
),
Center(
child: Text(
'Hello Flutter',
textDirection: TextDirection.ltr,
),
),
Center(
child: Text(
'Hello Flutter',
textDirection: TextDirection.ltr,
),
),
],
);
}
}