我试图将十六进制颜色转换为要在MaterialColor中使用的const颜色。 我不知道如何设置工厂,所以类可以返回一个const颜色。 我的班级:
class HtmlColor extends Color {
factory HtmlColor(String hexCode, int amt) {
if (hexCode[0] == "#") {
hexCode = hexCode.substring(1, 7);
}
var num = int.parse(hexCode, radix: 16);
var r = (num >> 16) + amt;
if (r > 255) r = 255;
else if (r < 0) r = 0;
var b = ((num >> 8) & 0x00FF) + amt;
if (b > 255) b = 255;
else if (b < 0) b = 0;
var g = (num & 0x0000FF) + amt;
if (g > 255) g = 255;
else if (g < 0) g = 0;
return new HtmlColor.fromValue((g | (b << 8) | (r << 16)) + 0xFF000000);
}
const HtmlColor.fromValue(int value) : super(value);
}
答案 0 :(得分:0)
String colorString = "0xFF42A5F5";
String valueString = colorString.split('0x')[1];
int value = int.parse(valueString, radix: 16);
Color color = new Color(value);
从这个答案中复制 How to convert Flutter color to string and back to a color
答案 1 :(得分:0)
有一个utils包,其中包含一个ColorUtils类,该类可以将hex转换为int并将int转换为hex。可以用来创建Flutter颜色。
Github:https://github.com/Ephenodrom/Dart-Basic-Utils
PuDev:https://pub.dev/packages/basic_utils
安装:
basic_utils: ^2.0.0
示例:
Color color = Color(ColorUtils.hexToInt("#FFFFFF"));
String hex = ColorUtils.intToHex(color.value);