構造方法
1辜腺、Color c1 = Color(0xFF3CAAFA);
2汗茄、Color c2 = Color.fromRGBO(60, 170, 250, 1);
3曼月、Color c3 = Color.fromARGB(255, 60, 170, 250);
4、Color c4 = Colors.blue;
1古涧、Color(int value)
這是Flutter默認的構造函數,value應該給一個16進制整數花盐。比如0xFF3CAAFA羡滑。
對應于藍湖的就是AHEX模式(#換成0x就可以了)。一開始的FF表示不透明度(alpha)算芯,整數值是0255(十進制)柒昏,或者0FF(16進制)。
企業(yè)微信截圖_136d443f-5b3d-4b2a-bf27-e735a387a6c7.png
2熙揍、Color.fromRGBO(int r, int g, int b, double opacity)
rgb為顏色值职祷,取值都是0255(十進制),或者0FF(16進制)诈嘿。
opacity表示透明度堪旧,取值是0~1,如果是百分比奖亚,可以轉換為這個淳梦。比如60%,就是opacity = 0.6
對應的藍湖模式是RGBA
企業(yè)微信截圖_def7adbb-d1f2-4f0c-b7ff-d1dc8ef291ca.png
3昔字、Color.fromARGB(int a, int r, int g, int b)
這個和1是一回事爆袍,就是把一個大整數拆成4個分量分別給首繁。
4、Colors.*
這個是方便方法陨囊,常用的顏色英文單詞弦疮,偶爾用用。
封裝1
透明度不常用蜘醋,并且透明度用16進制數字表示也不方便胁塞,所以可以封裝一下。
class ColorUtil {
/// 十六進制顏色压语,
/// hex, 十六進制值啸罢,例如:0xffffff,
/// alpha, 透明度 [0.0,1.0]
/// 百分比就是alpha,比如60%就是alpha = 0.6
static Color hexColor(int hex,{double alpha = 1}){
if (alpha < 0){
alpha = 0;
}else if (alpha > 1){
alpha = 1;
}
return Color.fromRGBO((hex & 0xFF0000) >> 16 ,
(hex & 0x00FF00) >> 8,
(hex & 0x0000FF) >> 0,
alpha);
}
}
ColorUtil.hexColor(0x3caafa)//透明度為1
ColorUtil.hexColor(0x3caafa,alpha: 0.5)//透明度為0.5
參考文章
封裝2: 字符串接口
一般UI給的顏色為字符串胎食,前面帶個#扰才,然后跟6位顏色值。比如#777781 100%
所以可以考慮給個字符串接口
/// 十六進制字符串轉顏色厕怜,
/// hexString, 十六進制值顏色衩匣,以#開頭,7位;例如:'#ffffff',
/// alpha, 透明度 [0.0,1.0]
/// 百分比就是alpha,比如60%就是alpha = 0.6
/// 如果參數不合法聊品,返回黑色(全0)
static Color hexStringColor(String hexString, {double alpha = 1}) {
if (hexString.isEmpty || hexString.length != 7) {
return Colors.black;
}
int hex = int.tryParse(hexString.substring(1), radix: 16) ?? 0;
return hexColor(hex, alpha: alpha);
}
一般情況有封裝1就已經足夠了。實在是喜歡字符串午绳,可以用用封裝2.