De achtergrondkleur van Flutter BoxDecoration overschrijft de achtergrondkleur van de container, waarom?

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 coloris een afkorting voor BoxDecoration’s color, dus BoxDecoration’s colorin de decorationeigenschap van de Container overschrijft de Container’s color.


Antwoord 2, autoriteit 21%

Probleem:

Je kunt coloren decorationniet tegelijkertijd gebruiken. Van docs:

De argumenten coloren decorationkunnen 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 u decoration: BoxDecoration(color: color).


Oplossingen:

  • Gebruik alleen color:

    Container(
      color: Colors.red
    )
    
  • Gebruik alleen decorationen geef hier colorop:

    Container(
      decoration: BoxDecoration(color: Colors.red)
    )
    

Antwoord 3, autoriteit 16%

De argumenten color and decorationkunnen 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)".

Other episodes