Flutter中使用16进制Hex颜色值
- 发表于
- flutter
从 Dart 2.6.0开始,您可以为 Color 类创建一个扩展,该扩展允许您使用十六进制颜色字符串来创建 Color 对象:
为 Color 类创建一个扩展
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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')}'; } |
使用
1 2 3 4 |
final Color color = HexColor.fromHex('#aabbcc'); print(color.toHex()); print(const Color(0xffaabbcc).toHex()); |
另一个构造函数
1 2 3 4 5 6 7 8 9 10 11 |
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)); } |
使用
1 2 3 |
Color color1 = HexColor("b74093"); Color color2 = HexColor("#b74093"); Color color3 = HexColor("#88b74093"); // If you wish to use ARGB format |
原文连接:Flutter中使用16进制Hex颜色值
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。