web-dev-qa-db-fra.com

Flutter / Dart: convertir la chaîne de couleur HEX en couleur?

Notre base de données a des couleurs enregistrées sous la forme d'un String comme "#AABBCC" et je recherche donc essentiellement une fonction comme celle-ci: Color.parseColor("#AABBCC"); pour Flutter

La classe Color nécessite quelque chose comme ceci Color(0xFF42A5F5) donc je dois convertir "#AABBCC" à 0xFFAABBCC

9
Jus10
/// Construct a color from a hex code string, of the format #RRGGBB.
Color hexToColor(String code) {
  return new Color(int.parse(code.substring(1, 7), radix: 16) + 0xFF000000);
}
27
Richard Heap

Un simple remplacement de chaîne le mettrait dans la bonne syntaxe:

String html_colour = '#AAABBCC';
String fixed_colour = html_colour.replace(new RegExp(r'#'), '0xFF');

Ça devrait le faire.

2
Kingsley

J'ai fini par le faire de cette façon:

hexStringToHexInt(String hex) {
  hex = hex.replaceFirst('#', '');
  hex = hex.length == 6 ? 'ff' + hex : hex;
  int val = int.parse(hex, radix: 16);
  return val;
}
2
Jus10

J'utilise cette fonction dans mon projet qui gère la conversion de la chaîne hexadécimale en couleur.

Color hexToColor(String hexString, {String alphaChannel = 'FF'}) {
  return Color(int.parse(hexString.replaceFirst('#', '0x$alphaChannel')));
}

L'idée ici est que vous pouvez maintenant passer à cette fonction une chaîne hexadécimale qui ressemble à ceci '#ffffff' en plus de cela, vous pouvez passer un canal alpha. Le canal alpha gère l’opacité de votre couleur et vous pouvez la transmettre directement à Color.

À propos des canaux alpha, la partie FF est une représentation hexadécimale de 0-100, c'est comme:

0 = 00 1 = 03 2 = 05 ... 9 = 17 ... 10 = 1A 11 = 1C 12 = 1F ... 99 = FC 100 = FF

Supposons que vous vouliez convertir # 000000 en une couleur et avoir une opacité de 0,1 dessus. Vous pouvez simplement appeler cette fonction comme ceci:

hexToColor('#000000', alphaChannel: '1A');

Et si vous l'appelez comme ceci:

hexToColor('#000000');

Ensuite, il ne vous rendra qu'une couleur noire avec 1 opacité. J'espère que cela aidera ceux qui se demandent comment gérer l'opacité et la gestion des couleurs un peu plus loin.

1
Mertcan Diken