Flutter Container:不能同时提供颜色和装饰

时间:2018-12-08 01:18:51

标签: flutter flutter-container

我想在容器周围画一个边框,并给背景上色。

Widget bodyWidget() {
  return Container(
    color: Colors.yellow,
    decoration: BoxDecoration(
      border: Border.all(color: Colors.black),
    ),
    child: Text("Flutter"),
  );
}

但是当我尝试这个时,我得到了错误

  

不能同时提供颜色和装饰物
  color参数只是“ decoration:new BoxDecoration(color:   颜色)”。

如何解决?

2 个答案:

答案 0 :(得分:4)

从容器中删除color参数并将其添加到BoxDecoration:

Widget bodyWidget() {
  return Container(
    decoration: BoxDecoration(
      color: Colors.yellow,
      border: Border.all(color: Colors.black),
    ),
    child: Text("Flutter"),
  );
}

enter image description here

如果选中Container source code,则可以看到color参数仅用于设置装饰为空的BoxDecoration颜色。

decoration = decoration ?? (color != null ? BoxDecoration(color: color) : null),

您得到的错误只是一个有用的提醒。否则,您会得到一个奇怪的覆盖(as was apparently the case in the past),或者甚至可能不会注意到该错误。

答案 1 :(得分:3)

color属性是用于创建带有颜色字段的BoxDecoration的简写。如果要添加盒子装饰,只需将颜色放在BoxDecoration上即可。

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

因此,如果您在BoxDecoration中使用过Container,则必须从Container中删除color参数,并在BoxDecoration中添加到其中

          Container(
              decoration: BoxDecoration(
                color: Colors.yellow,
              ),
           // color: Colors.yellow,
          )