swatch primary color colors dart flutter

colors - primary - ¿Cómo uso cadenas de color hexadecimales en Flutter?



primary swatch flutter (9)

En Flutter, la clase Color solo acepta números enteros como parámetros, o existe la posibilidad de usar los constructores con nombre de fromARGB y de fromRGBO .

Así que solo necesitamos convertir la cadena #b74093 a un valor entero. También debemos respetar que la opacidad siempre necesita ser especificada.
255 opacidad 255 (total) está representada por el valor hexadecimal FF . Esto ya nos deja con 0xFF . Ahora, solo tenemos que añadir nuestra cadena de color como esta:

final color = const Color(0xffb74093);

Las letras pueden ser mayúsculas o no:

final color = const Color(0xFFB74093);

¿Cómo convierto una cadena de color hexadecimal como #b74093 a un Color en Flutter?


Hay otra solución. Si almacena su color como cadena hexagonal normal y no desea agregarle opacidad (FF inicial): 1) Convierta su cadena hexadecimal a int Para convertir una cadena hexadecimal a un entero, realice una de las siguientes acciones:

var myInt = int.parse(hexString, radix: 16);

o

var myInt = int.parse("0x$hexString");

como un prefijo de 0x (o -0x) hará que int.parse se fije por defecto a radix de 16.

2) Añade opacidad a tu color a través del código

Color color = new Color(myInt).withOpacity(1.0);


La clase Color espera un entero ARGB. Ya que intenta usarlo con el valor RGB , represéntelo como int y 0xff con 0xff .

Color mainColor = Color(0xffb74093);

Si esto te molesta y aún deseas utilizar cadenas, puedes extender Color y agregar un constructor de cadenas.

class HexColor extends Color { static int _getColorFromHex(String hexColor) { hexColor = hexColor.toUpperCase().replaceAll("#", ""); if (hexColor.length == 6) { hexColor = "FF" + hexColor; } return int.parse(hexColor, radix: 16); } HexColor(final String hexColor) : super(_getColorFromHex(hexColor)); }

uso

Color color1 = HexColor("b74093"); Color color2 = HexColor("#b74093"); Color color3 = HexColor("#88b74093"); // if you wish to use ARGB format


Para convertir de cadena hexadecimal a int, haga:

int hexToInt(String hex) { int val = 0; int len = hex.length; for (int i = 0; i < len; i++) { int hexDigit = hex.codeUnitAt(i); if (hexDigit >= 48 && hexDigit <= 57) { val += (hexDigit - 48) * (1 << (4 * (len - 1 - i))); } else if (hexDigit >= 65 && hexDigit <= 70) { // A..F val += (hexDigit - 55) * (1 << (4 * (len - 1 - i))); } else if (hexDigit >= 97 && hexDigit <= 102) { // a..f val += (hexDigit - 87) * (1 << (4 * (len - 1 - i))); } else { throw new FormatException("Invalid hexadecimal value"); } } return val; }

Ejemplo de llamada:

Color color=new Color(hexToInt("FFB74093"));


Puede hacer clic en Widget de color y le ofrece información mucho más detallada sobre el significado de esas letras. También puede usar el método Color.fromARGB () para crear colores personalizados, lo cual es mucho más fácil para mí. Use el sitio web Flutter Doctor Color Picker para elegir el color que desee para su aplicación de flutter.


const appBackground = Color (0xffdf7599);

df7599 es el código hexadecimal de tu color


si su color es # e41749 solo agregue antes 0xff

para que puedas escribirlo como:

color: color (0xffe41749);


"#b74093" ? DE ACUERDO...

A la receta HEX

int getColorHexFromStr(String colorStr) { colorStr = "FF" + colorStr; colorStr = colorStr.replaceAll("#", ""); int val = 0; int len = colorStr.length; for (int i = 0; i < len; i++) { int hexDigit = colorStr.codeUnitAt(i); if (hexDigit >= 48 && hexDigit <= 57) { val += (hexDigit - 48) * (1 << (4 * (len - 1 - i))); } else if (hexDigit >= 65 && hexDigit <= 70) { // A..F val += (hexDigit - 55) * (1 << (4 * (len - 1 - i))); } else if (hexDigit >= 97 && hexDigit <= 102) { // a..f val += (hexDigit - 87) * (1 << (4 * (len - 1 - i))); } else { throw new FormatException("An error occurred when converting a color"); } } return val; }


import ''package:flutter/material.dart''; class HexToColor extends Color{ static _hexToColor(String code) { return int.parse(code.substring(1, 7), radix: 16) + 0xFF000000; } HexToColor(final String code) : super(_hexToColor(code)); }

Importe la nueva clase y utilícela como esta HexToColor(''#F2A03D'')