J'ai un widget que j'aimerai idéalement prendre dans une couleur matérielle de base et sortir un widget sur le thème avec des nuances de cette couleur. Par exemple:Existe-t-il une carte des couleurs de conception de matériaux pour Flutter?
return new Container(
color: Colors.pink.shade50,
child: new Text(
'hello',
style: new TextStyle(
color: Colors.pink.shade100,
),
),
);
exige de moi de spécifier les deux tons de rose. Idéalement, je pouvais faire quelque chose comme:
Color color = getBaseColorForThisPage(); // returns something like Colors.pink, but on another page, it'll return something like Colors.purple
return new Container(
color: color.shade50,
child: new Text(
'hello',
style: new TextStyle(
color: color.shade100,
),
),
);
est-il un moyen de retourner une « carte » de couleurs des matériaux dans une palette de couleurs, au lieu d'une seule couleur? Quand je regarde la saisie semi-automatique dans IntelliJ, je vois qu'après avoir tapé Colors.pink
, je peux spécifier la nuance. Mais si je mets la couleur à une variable, par ex. Color color = Colors.pink
, je suis plus tard pas en mesure de faire color.shade100
ou color[100]
. Merci!
Dois-je définir moi-même carte pour le ColorSwatch, ou est-il un moyen de se référer à la carte MaterialColor? Jusqu'à présent, c'est l'extrait de code que j'ai (excusez-moi pour le formatage), où je dois définir manuellement chaque nuance de la couleur: 'var map = new Carte(); map.putIfAbsent (50,() => Colors.pink [50]); map.putIfAbsent (100,() => Colors.pink [100]); var colorswatch = nouveau ColorSwatch (500, carte); // Couleur de paramétrage ultérieure: // color: colorswatch [50] ' J'ai essayé d'utiliser une couleur de Colors.primaries mais elle renvoie une MaterialColor au lieu d'une Map. –
Mary
Je ne sais pas pourquoi vous utilisez un 'Map' ici. Vous pouvez simplement dire 'ColorSwatch color = Colors.pink;' et vous pourrez dire 'color [50]' plus tard. Si vous savez que toutes les nuances sont 'MaterialColor', utilisez' MaterialColor' comme type pour 'color'. –
Ah, j'ai pensé que je devais instancier un nouvel objet ColorSwatch (qui prend dans une carte)! Je n'avais pas réalisé que je pouvais simplement définir un objet ColorSwatch sur une MaterialColor existante. Merci. – Mary