color
类需要一个ARGB整数。由于您尝试将其与rgb
值一起使用,因此将其表示为int并使用0xff
作为前缀。
Color mainColor = Color(0xffb74093);
如果您对此感到恼火,并且仍然希望使用字符串,则可以扩展color
并添加一个字符串构造函数
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));
}
用法
Color color1 = HexColor("b74093");
Color color2 = HexColor("#b74093");
Color color3 = HexColor("#88b74093"); // if you wish to use ARGB format
在Flutter中,color
类只接受整数作为参数,或者可以使用命名构造函数fromargb
和fromrgbo
。
所以我们只需要将字符串#B74093
转换为整数值。此外,我们还需要尊重始终需要指定不透明度。255
(完全)不透明度由十六进制值FF
表示。这就给我们留下了0xFF
。现在,我们只需要附加颜色字符串,如下所示:
const color = const Color(0xffb74093); // Second `const` is optional in assignments.
字母可以选择大写或不大写:
const color = const Color(0xFFB74093);
从Dart2.6.0
开始,您可以为color
类创建一个扩展
,它允许您使用十六进制颜色字符串创建一个color
对象:
dart prettyprint-override">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')}';
}
fromhex
方法也可以在mixin
或class
中声明,因为需要显式指定hexcolor
名称才能使用它,但扩展名对tohex
方法很有用,它可以隐式使用。这里有一个例子:
void main() {
final Color color = HexColor.fromHex('#aabbcc');
print(color.toHex());
print(const Color(0xffaabbcc).toHex());
}
这里的许多其他答案显示了如何从十六进制字符串动态创建color
,就像我上面所做的那样。但是,这样做意味着颜色不能是常量
。
理想情况下,您可以按照我在回答的第一部分中解释的方式分配颜色,这在大量实例化颜色时效率更高,而Flutter小部件通常就是这种情况。
问题内容: 我正在尝试在Swift中使用十六进制颜色值,而不是允许您使用的几个标准颜色值,但是我不知道该怎么做。 示例:如何将其用作颜色? 问题答案: 实际上是用十六进制表示的3种颜色分量- 红色,绿色和蓝色。您可以使用前缀在Swift中编写十六进制表示法,例如 为了简化转换,让我们创建一个采用整数(0-255)值的初始化程序: 用法: 如何获得阿尔法? 根据您的用例,您可以简单地使用本机方法,例
我用JSON格式存储了很多颜色。我使用rootbeer via gulp将它们转换为sass映射,可以由SCSS处理: 至 我可以很好地使用语法中的颜色,但一旦应用了任何颜色函数,如,编译器就会失败,因为颜色类型完全消失了。 即使使用也不允许sass将其视为字符串,但它需要是一种颜色。 我的问题是,是否有任何方法可以让我强制编译器将此作为一种颜色来处理呢?另一种方法是省略所有内置颜色函数的使用。
本文向大家介绍Flutter十六进制颜色转换成颜色对象,包括了Flutter十六进制颜色转换成颜色对象的使用技巧和注意事项,需要的朋友参考一下 十六进制颜色值格式一般如:#ff0000,以#开头,后面跟着6个十六进制字符。 而flutter中不能直接使用此类形式的颜色值,所以必须要转换为flutter颜色对象。 参考地址: https://stackoverflow.com/questions/5
如何在Flutter中添加十六进制值的颜色?例如,我正在尝试以下操作: 提前致谢
我想改变我的应用程序中的原色,所以我尝试: 但这不起作用,所以我检查了文档,找到了另一种方法,即使用 所以我的问题是:如何用十六进制颜色改变原色
我在JavaFX ColorPicker中选择了颜色。现在我需要将其保存为十六进制字符串。我找到了这个方法,但是对于JavaFX它不适用。JavaFX有自己的Color类,没有getRGB()方法,可以用作中间转换。