Flutter中使用16进制Hex颜色值
2023-4-14 16:0:59 Author: www.uedbox.com(查看原文) 阅读量:19 收藏

从 Dart 2.6.0开始,您可以为 Color 类创建一个扩展,该扩展允许您使用十六进制颜色字符串来创建 Color 对象:

为 Color 类创建一个扩展

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

}

使用

final Color color = HexColor.fromHex('#aabbcc');

print(color.toHex());

print(const Color(0xffaabbcc).toHex());

另一个构造函数

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


文章来源: https://www.uedbox.com/post/68812/
如有侵权请联系:admin#unsafe.sh