Контейнер Flutter: не может обеспечить ни цвет, ни украшение

Я хочу нарисовать границу вокруг моего контейнера и сделать фон цветным.

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

Но когда я пытаюсь это сделать, я получаю ошибку

Не может предоставить ни цвет, ни украшение
Аргумент color - это всего лишь сокращение для "украшения: новый BoxDecoration(цвет: цвет)".

Как это решается?

Это ответ на вопросы и ответы.

1 ответ

Решение

Удалить color параметр из контейнера и добавьте его в BoxDecoration:

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

Если вы проверите исходный код контейнера, вы увидите, что color Параметр просто используется для установки цвета BoxDecoration, если украшение имеет значение null.

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

Ошибка, которую вы получили, является лишь полезным напоминанием об этом. В противном случае вы получите странное переопределение ( как было, очевидно, в прошлом), или вы можете даже не заметить ошибку.

В 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 и добавить к нему в BoxDecoration

          Container(
              decoration: BoxDecoration(
                color: Colors.yellow,
              ),
           // color: Colors.yellow,
          )
Другие вопросы по тегам