使用:
// 使用Color的静态方法 fromARGB() 来创建颜色对象。透明度为 255(完全不透明)
Color a = Color.fromARGB(255, 42, 35, 72);
// 使用八位的十六进制数来表示颜色,其中前两位表示透明度,后六位表示红色、绿色和蓝色通道的值。0xFF 表示完全不透明
Color b = Color(0xFF282344);
// 使用自定义的HexColor类,它可以从十六进制字符串中创建颜色对象。为6位时默认不透明,为8位时FF表示不透明。
Color c = HexColor.fromHex("#282344");
Color d = HexColor.fromHex('#FF282344');
// 颜色转为十六进制字符串
String aHex6 = a.toHex6();
String aHex8 = a.toHex8();
String cHex61 = c.toHex6();
String cHex81 = c.toHex8();
拓展:
import 'package:flutter/material.dart';
extension ColorUtils on Color {
// 转换Color对象为8位16进制字符串
String toHex8({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')}';
// 转换Color对象为6位16进制字符串
String toHex6({bool leadingHashSign = true}) => '${leadingHashSign ? '#' : ''}'
'${red.toRadixString(16).padLeft(2, '0')}'
'${green.toRadixString(16).padLeft(2, '0')}'
'${blue.toRadixString(16).padLeft(2, '0')}';
}
class HexColor {
// 解析16进制字符串为Color对象
static Color fromHex(String hexString) {
String hex = hexString.replaceAll('#', '');
if (hex.length == 6) {
hex = 'FF' + hex; // 默认透明度为1(FF)
} else if (hex.length == 3) {
hex = 'FF' + hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; // 简写形式
}
return Color(int.parse(hex, radix: 16));
}
}