颤动/飞镖const颜色

时间:2018-05-19 14:32:04

标签: dart flutter

我试图将十六进制颜色转换为要在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);

}

2 个答案:

答案 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);