Flutter顏色(Color)使用和十六進制顏色轉換

一、前言

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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。