【问题标题】:Flutter/Dart: Convert HEX color string to Color?Flutter/Dart:将 HEX 颜色字符串转换为颜色?
【发布时间】:2018-05-17 01:13:14
【问题描述】:

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

Color 类需要Color(0xFF42A5F5) 这样的东西,所以我需要将"#AABBCC" 转换为0xFFAABBCC

【问题讨论】:

    标签: string colors dart flutter


    【解决方案1】:
    /// 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);
    }
    

    【讨论】:

    • 如果我想添加像#AARRGGBB 或#RRGGBBAA 这样的不透明度/alpha 怎么办?
    【解决方案2】:

    我在我的项目中使用这个函数来处理将十六进制字符串转换为颜色。

    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 的黑色。希望这对任何想进一步处理不透明度和颜色处理的人有所帮助。

    【讨论】:

    【解决方案3】:

    我最终这样做了:

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

    【讨论】:

      【解决方案4】:

      一个简单的字符串替换将得到正确的语法:

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

      应该可以的。

      【讨论】:

      • 仍会以字符串结尾,我们需要一个 int
      猜你喜欢
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 2012-02-06
      • 2018-06-16
      • 2017-07-19
      • 2016-08-11
      • 2012-11-01
      相关资源
      最近更新 更多