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
/// 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);
}
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.
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;
}
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.