一、前言
Flutter中顏色的設置有很多方法,但是一般我使用的有4種,由于平時開發中十六進制色值使用的比較多,所以最后對十六進制色值的使用進行了封裝
二、常規用法
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 c5 = Colors.blue;
1、
Color(int value)
Color(0xFF3CAAFA),value接收的是一個十六進制(0x開頭),FF表示的是十六進制透明度(00-FF),3CAAFA是十六進制色值。2、
Color.fromRGBO(int r, int g, int b, double opacity)
Color.fromRGBO(60, 170, 250, 1),r、g、b分別表示red、green、blue,常規的紅綠藍三色,取值范圍為0-255,opacity表示透明度,取值0.0-1.0。3、
Color.fromARGB(int a, int r, int g, int b)
Color.fromARGB(255, 60, 170, 250),a表示透明度,取值0-255,rgb同上一樣。4、
Colors._()
Colors類定義了很多顏色,可以直接使用,例如 Colors.blue,其實就是第一種Color(int value)的封裝。
三、十六進制使用封裝
我們使用十六進制顏色的時候透明度使用的比較少,但是系統的方法總是帶上透明度用著很不舒服,這里所以對十六進制用法做了一層封裝處理,代碼如下
class ColorsUtil {
/// 十六進制顏色,
/// hex, 十六進制值,例如:0xffffff,
/// alpha, 透明度 [0.0,1.0]
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);
}
}
使用的時候直接引入,調用即可
ColorsUtil.hexColor(0x3caafa)//透明度為1
ColorsUtil.hexColor(0x3caafa,alpha: 0.5)//透明度為0.5