我有一个Flutter Container小部件,我为它定义了一种颜色(粉红色),但由于某种原因,BoxDecoration中的颜色会覆盖它(绿色)。为什么呢?
new Container(
color: Colors.pink,
decoration: new BoxDecoration(
borderRadius: new BorderRadius.circular(16.0),
color: Colors.green,
),
);
答案 0 :(得分:7)
Container的color
是BoxDecoration的color
的简写,因此Box的color
属性中的BoxDecoration decoration
会覆盖其容器的内容。 color
。
答案 1 :(得分:4)
来自文档:
不能同时提供
color
和decoration
参数,因为这可能会导致装饰画超出背景颜色。要提供带有颜色的装饰,请使用decoration: BoxDecoration(color: color)
。
如果您仅使用Container
提供颜色,建议您使用ColoredBox
,它比常规的Container
更为优化。
ColoredBox(
color: Colors.red, // color
child: ...,
)
BoxDecoration
用于实际绘制背景颜色。BoxDecoration
小部件不仅覆盖了背景颜色,还涵盖了许多情况,其效率不如新的ColoredBox
小部件,后者仅绘制了背景颜色。
答案 2 :(得分:1)
不能同时提供backgroundColor: 'transparent'
参数,因为这可能会导致装饰画超出背景颜色。要提供带有颜色的装饰,可以使用以下代码。
color and decoration
答案 3 :(得分:0)
Flutter小组说,BoxDecoration()中的color属性在将背景颜色应用于Container小部件时非常常用。因此,他们在Container小部件中为color属性放置了单独的简写。因此,当我们在同一个Container小部件中同时使用color属性和BoxDecoration()color属性时,将引发如下声明:
Cannot provide both a color and a decoration
The color argument is just a shorthand for "decoration: new BoxDecoration(color: color)".
答案 4 :(得分:-5)
BoxDecoration在Container的装饰属性中的颜色会覆盖其Container的颜色