¿Cómo convierto una cadena de color hexadecimal como #b74093
a Color
en Flutter?
En Flutter, la Color
clase solo acepta enteros como parámetros , o existe la posibilidad de usar los constructores con nombre fromARGB
y fromRGBO
.
Entonces solo necesitamos convertir la cadena #b74093
a un valor entero. También debemos respetar que la opacidad siempre debe especificarse.
255
La opacidad (completa) está representada por el valor hexadecimal FF
. Esto ya nos deja con 0xFF
. Ahora, solo necesitamos agregar nuestra cadena de color de esta manera:
const color = const Color(0xffb74093); // Second `const` is optional in assignments.
Las letras pueden ser elegidas con mayúscula o no:
const color = const Color(0xFFB74093);
Comenzando con Dart 2.6.0
, puede crear unextension
para la Color
clase que le permita usar cadenas de color hexadecimales para crear un Color
objeto:
extension HexColor on Color {
/// String is in the format "aabbcc" or "ffaabbcc" with an optional leading "#".
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));
}
/// Prefixes a hash sign if [leadingHashSign] is set to `true` (default is `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')}';
}
El fromHex
método también se puede declarar en mixin
o class
porque el HexColor
nombre debe especificarse explícitamente para poder usarlo, pero la extensión es útil para el toHex
método, que puede usarse implícitamente. Aquí hay un ejemplo:
void main() {
final Color color = HexColor.fromHex('#aabbcc');
print(color.toHex());
print(const Color(0xffaabbcc).toHex());
}
Muchas de las otras respuestas aquí muestran cómo se puede crear dinámicamente a Color
partir de una cadena hexadecimal, como hice anteriormente. Sin embargo, hacer esto significa que el color no puede ser a const
.
Idealmente, asignaría sus colores de la manera que expliqué en la primera parte de esta respuesta, que es más eficiente cuando se crean muchas instancias de colores, que suele ser el caso de los widgets Flutter.
HexColor.fromHex
funciona peroColor.fromHex
no funciona).0x
solo indica que los siguientes dígitos se analizarán como un hexadecimal 🙃La
Color
clase espera un número entero ARGB. Como intentas usarlo conRGB
valor, representalo como int y ponle el prefijo0xff
.Si esto le molesta y aún desea usar cadenas, puede extender
Color
y agregar un constructor de cadenasuso
fuente
si desea usar un código hexadecimal de color que esté en este formato # 123456, entonces se puede usar muy fácilmente, cree variables A de tipo Color y asígnele los siguientes valores.
use myhexcolor y ya está listo para comenzar.
si desea cambiar la opacidad del color directamente desde el código hexadecimal, cambie el valor ff en 0xff al valor respectivamente de la tabla a continuación.
Valores de opacidad hexadecimal
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
fuente
Para convertir de cadena hexadecimal a int, haga:
Ejemplo de llamada:
fuente
Una función simple sin usar una clase:
Puedes usarlo así:
fuente
Color(int.parse('#000000'.replaceAll('#', '0xff')))
Manera fácil :
Uso:
fuente
Hay otra solucion. Si almacena su color como una cadena hexadecimal normal y no desea agregarle opacidad (FF inicial): 1) Convierta su cadena hexadecimal en int Para convertir una cadena hexadecimal en un entero, realice una de las siguientes acciones:
o
como prefijo de 0x (o -0x) hará que int.parse tenga el valor predeterminado de radix de 16.
2) Agregue opacidad a su color a través del código
fuente
ThemeData
.En Flutter crea un color de RGB con alfa, usa
Cómo usar el color hexadecimal:
Color hexagonal con opacidad:
// o cambiar el valor "FF"
Para obtener más información, siga el enlace oficial https://api.flutter.dev/flutter/dart-ui/Color-class.html
fuente
utils.dart
ejemplo de uso
fuente
Para referencia general. Hay una manera más simple de usar la biblioteca Supercharged . Aunque puede usar métodos de extensión con todas las soluciones mencionadas, encontrará un práctico kit de herramientas de biblioteca de usuario.
Más fácil, ¿verdad?
Sobrealimentado
fuente
"#b74093"
? OKAY...A la receta HEX
fuente
Importe la nueva clase y úsela así
HexToColor('#F2A03D')
fuente
Perdí la respuesta obvia usando números hexadecimales para el constructor fromRGB:
fuente
Puede hacer clic en Color Widget y le informa con mucha más profundidad cómo representan esas letras. También puede usar el método Color.fromARGB () para crear colores personalizados que es mucho más fácil para mí. Use el sitio web de Flutter Doctor Color Picker para elegir el color que desee para su aplicación de flutter.
fuente
No sé por qué se está cayendo, esta fue la solución para mí.
La única forma que no requirió pasos adicionales
fuente
Puede usar este paquete from_css_color para
Color
salir de una cadena hexadecimal. Admite notación hexadecimal RGB de tres y seis dígitos.Para optimizar, cree una instancia de Color una vez para cada color y guárdela en algún lugar para su uso posterior.
fuente