Container是在实际开发中经常用到的小部件,Container里组合了各种小部件,让我们开发更加便捷,来看一下的Container都有哪些属性.
Container({
Key? key,
this.alignment,
this.padding,
this.color,
this.decoration,
this.foregroundDecoration,
double? width,
double? height,
BoxConstraints? constraints,
this.margin,
this.transform,
this.transformAlignment,
this.child,
this.clipBehavior = Clip.none,
})
key
是用来作为Widget的标识
,仅仅用来更新widget->key
相同的小部件的状态。更跟树时候系统会比较key值来判断是否更新
它的类型是AlignmentGeometry,AlignmentGeometry是一个抽象类,一般使用Alignment来设置子视图的位置
/// The top left corner.
static const Alignment topLeft = Alignment(-1.0, -1.0);
/// The center point along the top edge.
static const Alignment topCenter = Alignment(0.0, -1.0);
/// The top right corner.
static const Alignment topRight = Alignment(1.0, -1.0);
/// The center point along the left edge.
static const Alignment centerLeft = Alignment(-1.0, 0.0);
/// The center point, both horizontally and vertically.
static const Alignment center = Alignment(0.0, 0.0);
/// The center point along the right edge.
static const Alignment centerRight = Alignment(1.0, 0.0);
/// The bottom left corner.
static const Alignment bottomLeft = Alignment(-1.0, 1.0);
/// The center point along the bottom edge.
static const Alignment bottomCenter = Alignment(0.0, 1.0);
/// The bottom right corner.
static const Alignment bottomRight = Alignment(1.0, 1.0);
它的类型是EdgeInsetsGeometry,一般使用EdgeInsets来设置子视图内边距
列如:
padding:const EdgeInsets.all(8.0)
padding:const EdgeInsets.only(left: 40.0)
还可以设置水平方向的
const EdgeInsets.symmetric(vertical: 8.0)
const EdgeInsets.symmetric(horizontal: 8.0)
它的类型是Color,一般使用color来设置在 [child] 后面绘制的颜色。这里需要注意的是,当背景是简单的颜色时,应该首选该属性。对于其他情况,例如渐变或图像,请使用 [decoration] 属性。如果使用了[decoration],则该属性必须为null。 [decoration] 仍然可以绘制背景颜色,即使此属性是null
它的类型是Decoration,Decoration这是个抽象类不能直接使用,通常使用BoxDecoration,来看一下BoxDecoration的构造函数
const BoxDecoration({
this.color,
this.image,
this.border,
this.borderRadius,
this.boxShadow,
this.gradient,
this.backgroundBlendMode,
this.shape = BoxShape.rectangle,
})
color颜色,image背景图片,border边框,borderRadius边框圆角,boxShadow盒子阴影,gradient渐变色,backgroundBlendModel应用于框的[颜色]或[渐变]背景的混合模式。shape剪裁方式,这里说一下shape,它的类型是BoxShape,shape即为装饰的形状,默认为BoxShape.rectangle,也可以选择BoxShape.circle。BoxShape.circle是整个装饰为圆形
它的类型也是Decoration,foregroundDecoration是前景装饰,通常使用BoxDecoration
它的类型是BoxConstraints,constraints可以指定Container的最大宽高和最小宽高,否则有时超出某些范围页面显示错乱异常。
BoxConstraints({
this.minWidth = 0.0,
this.maxWidth = double.infinity,
this.minHeight = 0.0,
this.maxHeight = double.infinity,
})
它的类型是EdgeInsetsGeometry,一般使用EdgeInsets,表示外边距表示自身对父视图的偏移。
它的类型是Matrix4,Matrix4是在绘制容器之前应用的变换矩阵。基本上所有的变换都是在Matrix4(…)基础上实现的
它的类型是AlignmentGeometry,变换锚点或者是变换重力方向和上文中的alignment是一样的
Container的子视图
它的类型是Clip,clipBehavior是组件内容边缘的切割方式,分为四种: