我如何转换一个十六进制的颜色字符串像#b74093在扑动的颜色?
我想在Dart中使用HEX颜色代码。
我如何转换一个十六进制的颜色字符串像#b74093在扑动的颜色?
我想在Dart中使用HEX颜色代码。
当前回答
这就是我的解决方案:
String hexString = "45a3df";
Color(int.parse("0xff${hexString}"));
这是唯一不需要额外步骤的方法。
其他回答
“# b74093”?好吧……
到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;
}
还有另一种解决方案。如果您将颜色存储为普通的十六进制字符串,并且不想为其添加不透明度(前导“FF”):
将十六进制字符串转换为int 要将十六进制字符串转换为整数,请执行以下操作之一: var myInt = int。解析(hexString,基数:16); 或 var myInt = int.parse("0x$hexString"); 作为0x(或-0x)的前缀将使int。将默认值解析为基数16。 通过代码添加不透明度到你的颜色 Color = new Color(myInt).withOpacity(1.0);
在fromRGB构造函数中使用十六进制数:
Color.fromRGBO(0xb7, 0x40, 0x93, 1),
如果你迫切需要一个十六进制的颜色在你的应用程序,有一个简单的步骤,你可以遵循:
从这里简单地将您的十六进制颜色转换为RGB格式。 获取RGB值。 在Flutter中,您有一个简单的选项来使用RGB颜色: Color.fromRGBO(r_value, g_value, b_value,不透明度)将为您做这项工作。 继续调整O_value以获得您想要的颜色。
我使用这个material_color_gen包,它的工作就像一个魅力
material_color_gen: ^2.0.0
使用:
import 'package:material_color_gen/material_color_gen.dart';
primarySwatch: Color(0xFFFF0000).toMaterialColor()
这是一个HexColor的例子:#ff0000 使用0xFF更改#的结果是:0xFFFF0000
官方链接: https://pub.dev/packages/material_color_gen