Flutter BoxDecoration的背景颜色会覆盖Container的背景颜色,为什么?

Mar*_*ary 12 flutter flutter-container

我有一个Flutter Container小部件,并为其定义了一种颜色(粉红色),但是由于某种原因,BoxDecoration中的颜色将其覆盖(绿色)。为什么?

new Container(
  color: Colors.pink,
  decoration: new BoxDecoration(
    borderRadius: new BorderRadius.circular(16.0),
    color: Colors.green,
  ),
);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ary 16

Container color是BoxDecoration的简写color,因此colorContainer decoration属性中BoxDecoration的优先于其Container的color

  • 我想为边框提供蓝色,为容器背景颜色提供琥珀色,我该怎么办? (2认同)
  • 你可以这样实现 ```decoration: BoxDecoration( color: Colors.yellow, border: Border.all(color: Theme.of(context).accentColor,) ),``` @Kamlesh (2认同)

Cop*_*oad 6

问题:

文档

colordecoration参数不能同时提供,因为它会潜在地导致在装饰绘制在背景颜色。要为装饰提供颜色,请使用decoration: BoxDecoration(color: color)

源代码清楚地提到 ofcolordecorationshould be null

assert(color == null || decoration == null,
'Cannot provide both a color and a decoration\n'
    'To provide both, use "decoration: BoxDecoration(color: color)".',
)
Run Code Online (Sandbox Code Playgroud)

解决方案:


Par*_*iya 5

color and decoration参数不能同时提供,因为它会潜在地导致在装饰绘制在背景颜色。要提供带有颜色的装饰,您可以使用以下代码。

decoration: BoxDecoration(color: Colors.red).
Run Code Online (Sandbox Code Playgroud)


小智 5

仅设置背景颜色使用此代码

new Container(
  color: Colors.pink,
  
);
Run Code Online (Sandbox Code Playgroud)

如果使用半径或形状设置背景颜色,则使用装饰内部的颜色

 Container(
          decoration: BoxDecoration(
          color: Colors.red,
          borderRadius: BorderRadius.circular(17)),
child:SizeBox());
Run Code Online (Sandbox Code Playgroud)