Контейнер 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,
)