¿Cómo convierto una cadena de color hexadecimal como #b74093a Coloren Flutter?
En Flutter, la Colorclase solo acepta enteros como parámetros , o existe la posibilidad de usar los constructores con nombre fromARGBy fromRGBO.
Entonces solo necesitamos convertir la cadena #b74093a un valor entero. También debemos respetar que la opacidad siempre debe especificarse.
255La 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 Colorclase que le permita usar cadenas de color hexadecimales para crear un Colorobjeto:
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 fromHexmétodo también se puede declarar en mixino classporque el HexColornombre debe especificarse explícitamente para poder usarlo, pero la extensión es útil para el toHexmé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 Colorpartir 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.fromHexfunciona peroColor.fromHexno funciona).0xsolo indica que los siguientes dígitos se analizarán como un hexadecimal 🙃La
Colorclase espera un número entero ARGB. Como intentas usarlo conRGBvalor, representalo como int y ponle el prefijo0xff.Si esto le molesta y aún desea usar cadenas, puede extender
Colory 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
Colorsalir 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