In Flutter la classe Color accetta solo numeri interi come parametri, quindi abbiamo solo bisogno di convertire la stringa esadecimale di un colore (es. #E14D26) in un valore intero. Inoltre dobbiamo tenere presente che l'opacità deve sempre essere specificata.
L'opacità 255 (piena) è rappresentata dal valore esadecimale FF. Quindi il nostro valore comincerà con 0xFF. Ora, dobbiamo solo aggiungere la stringa esadecimale del colore in questo modo:
const color = const Color(0xFFE14D26);
Se si desidera utilizzare valori di opacità diversi, è possibile sostituire il primo FF con i valori di questa tabella (funziona anche per gli altri canali di colore).
100% | FF |
95% | F2 |
90% | E6 |
85% | D9 |
80% | CC |
75% | BF |
70% | B3 |
65% | A6 |
60% | 99 |
55% | 8C |
50% | 80 |
45% | 73 |
40% | 66 |
35% | 59 |
30% | 4D |
25% | 40 |
20% | 33 |
15% | 26 |
10% | 1A |
5% | 0D |
0% | 00 |
A partire da Dart 2.6.0, puoi creare un'estensione per la classe Color che ti consente di utilizzare stringhe di colore esadecimali per creare un oggetto Color:
extension HexColor on Color {
/// La stringa è in formato "aabbcc" o "ffaabbcc" con un opzionale "#" all'inizio.
static Color fromHex(String hexString) {
final buffer = StringBuffer();
if (hexString.length == 6 || hexString.length == 7) buffer.write('ff');
buffer.write(hexString.replaceFirst('#', ''));
return Color(int.parse(buffer.toString(), radix: 16));
}
/// MEtte come prefisso il cancelletto se [leadingHashSign] è impostato come `true` (di default è `true`).
String toHex({bool leadingHashSign = true}) => '${leadingHashSign ? '#' : ''}'
'${alpha.toRadixString(16).padLeft(2, '0')}'
'${red.toRadixString(16).padLeft(2, '0')}'
'${green.toRadixString(16).padLeft(2, '0')}'
'${blue.toRadixString(16).padLeft(2, '0')}';
}
Il metodo fromHex può anche essere dichiarato in un mixin o in una classe perché il nome HexColor deve essere specificato esplicitamente per usarlo, ma l'estensione è utile per il metodo toHex, che può essere usato implicitamente. Ecco un esempio:
void main() {
final Color color = HexColor.fromHex('#aabbcc');
print(color.toHex());
print(const Color(0xffaabbcc).toHex());
}
Contattami se hai bisogno di un programmatore Flutter per il tuo progetto o la tua azienda