我如何转换一个十六进制的颜色字符串像#b74093在扑动的颜色?
我想在Dart中使用HEX颜色代码。
我如何转换一个十六进制的颜色字符串像#b74093在扑动的颜色?
我想在Dart中使用HEX颜色代码。
当前回答
最好的方法是使用来自pub.dev的flutter十六进制颜色插件 然后导入包。
import 'package:hexcolor/hexcolor.dart';
然后把它用在这种特殊的方式上。
Text(
'Running on: $_platformVersion\n',
style: TextStyle(color: HexColor("#f2f2f2")),
),
Text(
"Hex From Material $textColor",
style: TextStyle(color: ColorToHex(Colors.teal)),
),
这里的特殊插件。
其他回答
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));
}
导入新类并像这样使用它:
HexToColor('#F2A03D')
可以使用from_css_color包从十六进制字符串中获取Color。它支持三位和六位RGB十六进制表示法。
Color color = fromCSSColor('#ff00aa')
为了优化起见,为每种颜色创建一个Color实例,并将其存储在某个地方以供以后使用。
在Flutter中,要从带alpha的RGB创建颜色,请使用:
return new Container(
color: new Color.fromRGBO(0, 0, 0, 0.5),
);
如何使用十六进制颜色:
return new Container(
color: new Color(0xFF4286f4),
);
// 0xFF -> the opacity (FF for opaque)
// 4286f4 -> the hexadecimal color
不透明的十六进制颜色:
return new Container(
color: new Color(0xFF4286f4).withOpacity(0.5),
);
//或改变“FF”值
100% — FF
95% — F2
90% — E6
85% — D9
80% — CC
75% — BF
70% — B3
65% — A6
60% — 99
55% — 8C
50% — 80
45% — 73
40% — 66
35% — 59
30% — 4D
25% — 40
20% — 33
15% — 26
10% — 1A
5% — 0D
0% — 00
要了解更多信息,请参阅官方文档页,Color类- dart:ui库- dart API。
还有另一种解决方案。如果您将颜色存储为普通的十六进制字符串,并且不想为其添加不透明度(前导“FF”):
将十六进制字符串转换为int 要将十六进制字符串转换为整数,请执行以下操作之一: var myInt = int。解析(hexString,基数:16); 或 var myInt = int.parse("0x$hexString"); 作为0x(或-0x)的前缀将使int。将默认值解析为基数16。 通过代码添加不透明度到你的颜色 Color = new Color(myInt).withOpacity(1.0);
文件utils.dart
///
/// Convert a color hex-string to a Color object.
///
Color getColorFromHex(String hexColor) {
hexColor = hexColor.toUpperCase().replaceAll('#', '');
if (hexColor.length == 6) {
hexColor = 'FF' + hexColor;
}
return Color(int.parse(hexColor, radix: 16));
}
示例使用
Text(
'Hello, World!',
style: TextStyle(
color: getColorFromHex('#aabbcc'),
fontWeight: FontWeight.bold,
)
)