【发布时间】:2018-05-17 01:13:14
【问题描述】:
我们的数据库将颜色保存为String,例如“#AABBCC”,所以我基本上在寻找这样的函数:Color.parseColor("#AABBCC"); for Flutter
Color 类需要Color(0xFF42A5F5) 这样的东西,所以我需要将"#AABBCC" 转换为0xFFAABBCC
【问题讨论】:
标签: string colors dart flutter
我们的数据库将颜色保存为String,例如“#AABBCC”,所以我基本上在寻找这样的函数:Color.parseColor("#AABBCC"); for Flutter
Color 类需要Color(0xFF42A5F5) 这样的东西,所以我需要将"#AABBCC" 转换为0xFFAABBCC
【问题讨论】:
标签: string colors dart flutter
/// Construct a color from a hex code string, of the format #RRGGBB.
Color hexToColor(String code) {
return new Color(int.parse(code.substring(1, 7), radix: 16) + 0xFF000000);
}
【讨论】:
我在我的项目中使用这个函数来处理将十六进制字符串转换为颜色。
Color hexToColor(String hexString, {String alphaChannel = 'FF'}) {
return Color(int.parse(hexString.replaceFirst('#', '0x$alphaChannel')));
}
这里的想法是,现在您可以向此函数传递一个类似于“#ffffff”的十六进制字符串,此外您还可以传递一个 alpha 通道。 Alpha 通道的作用是处理颜色的不透明度,您可以直接将其传递给 Color。
关于 alpha 通道,FF 部分是 0-100 的十六进制表示,如下所示:
0 = 00 1 = 03 2 = 05 ... 9 = 17 ... 10 = 1A 11 = 1℃ 12 = 1F ... 99=FC 100 = FF
假设您想将#000000 转换为颜色,并且不透明度为 0.1。 你可以像这样简单地调用这个函数:
hexToColor('#000000', alphaChannel: '1A');
如果你这样称呼它:
hexToColor('#000000');
那么它只会返回一个不透明度为 1 的黑色。希望这对任何想进一步处理不透明度和颜色处理的人有所帮助。
【讨论】:
我最终这样做了:
hexStringToHexInt(String hex) {
hex = hex.replaceFirst('#', '');
hex = hex.length == 6 ? 'ff' + hex : hex;
int val = int.parse(hex, radix: 16);
return val;
}
【讨论】:
一个简单的字符串替换将得到正确的语法:
String html_colour = '#AAABBCC';
String fixed_colour = html_colour.replace(new RegExp(r'#'), '0xFF');
应该可以的。
【讨论】: