Flutter / Dart:将HEX颜色字符串转换为Color?

时间:2018-05-17 01:13:15

标签: string colors dart flutter

我们的数据库将颜色保存为String,如#34;#AABBCC"所以我基本上都在寻找这样的函数:Color.parseColor("#AABBCC");用于Flutter

Color类需要Color(0xFF42A5F5)之类的内容,因此我需要将"#AABBCC"转换为0xFFAABBCC

5 个答案:

答案 0 :(得分:12)

/// 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);
}

答案 1 :(得分:1)

简单的字符串替换将使用正确的语法:

String html_colour = '#AAABBCC';
String fixed_colour = html_colour.replace(new RegExp(r'#'), '0xFF');

应该这样做。

答案 2 :(得分:1)

我最终这样做了:

hexStringToHexInt(String hex) {
  hex = hex.replaceFirst('#', '');
  hex = hex.length == 6 ? 'ff' + hex : hex;
  int val = int.parse(hex, radix: 16);
  return val;
}

答案 3 :(得分:1)

我在项目中使用了此功能,该功能可以将十六进制字符串转换为颜色。

Color hexToColor(String hexString, {String alphaChannel = 'FF'}) {
  return Color(int.parse(hexString.replaceFirst('#', '0x$alphaChannel')));
}

这里的想法是,现在您可以传递此函数的十六进制字符串,除了传递Alpha通道外,还类似于“ #ffffff”。 Alpha通道的作用是处理颜色的不透明度,您可以将其直接传递给Color。

关于alpha通道,FF部分是0-100的十六进制表示,就像:

0 = 00 1 = 03 2 = 05 ... 9 = 17 ... 10 = 1A 11 = 1摄氏度 12 = 1楼 ... 99 = FC 100 = FF

让我们假设您要将#000000转换为Color并具有0.1的不透明度。 您可以像这样简单地调用此函数:

hexToColor('#000000', alphaChannel: '1A');

如果您这样称呼它:

hexToColor('#000000');

然后,它只会返回不透明度为1的黑色。希望这对想知道如何进一步处理不透明度和颜色处理的人有所帮助。

答案 4 :(得分:1)

1-安装Hexcolor插件

dependencies:
  flutter:
    sdk: flutter
  hexcolor: ^1.0.4

2-将插件导入您的班级

import 'package:hexcolor/hexcolor.dart';

现在使用像这样的插件

Container(
          color: Hexcolor("#0EBB64"),
          child: Center(child: Image.asset("images/marker.png",width: 100,height: 100,),),
        )