Ik heb een Flutter Container-widget en ik heb er een kleur voor gedefinieerd (roze), maar om de een of andere reden overschrijft de kleur in BoxDecoration deze (groen). Waarom?
new Container(
color: Colors.pink,
decoration: new BoxDecoration(
borderRadius: new BorderRadius.circular(16.0),
color: Colors.green,
),
);
Antwoord 1, autoriteit 100%
Container’s color
is een afkorting voor BoxDecoration’s color
, dus BoxDecoration’s color
in de decoration
eigenschap van de Container overschrijft de Container’s color
.
Antwoord 2, autoriteit 21%
Probleem:
Je kunt color
en decoration
niet tegelijkertijd gebruiken. Van docs:
De argumenten
color
endecoration
kunnen niet beide worden opgegeven, omdat dit ertoe zou kunnen leiden dat de decoratie over de achtergrondkleur heen trekt. Om een decoratie van een kleur te voorzien, gebruikt udecoration: BoxDecoration(color: color)
.
Oplossingen:
-
Gebruik alleen
color
:Container( color: Colors.red )
-
Gebruik alleen
decoration
en geef hiercolor
op:Container( decoration: BoxDecoration(color: Colors.red) )
Antwoord 3, autoriteit 16%
De argumenten color and decoration
kunnen niet beide worden opgegeven, aangezien dit ertoe zou kunnen leiden dat de versiering over de achtergrondkleur heen trekt. Om een decoratie van kleur te voorzien, kunt u onderstaande code gebruiken.
decoration: BoxDecoration(color: Colors.red).
Antwoord 4
Flutter-team zegt dat de kleureigenschap in BoxDecoration() vrij vaak wordt gebruikt bij het toepassen van achtergrondkleur op Container-widget. Daarom hebben ze een aparte afkorting voor kleureigenschap in de containerwidget geplaatst. Dus wanneer we zowel de kleureigenschap als de kleureigenschap BoxDecoration() gebruiken in dezelfde Container-widget, wordt een bewering als volgt gegenereerd:
Cannot provide both a color and a decoration
The color argument is just a shorthand for "decoration: new BoxDecoration(color: color)".