Flutter:将 RGB 值转换为十六进制 int

Ril*_*ick 3 hex colors type-conversion dart flutter

在 Flutter 中,我想将 RGB 颜色作为 MaterialColor() 构造函数中的 int 主要颜色。如何将 RGB 值转换为格式如下的十六进制 int:0xff-----?抱歉问这个简短的问题,我真的找不到它!

Son*_*low 5

您可以使用以下函数将 RGB 转换为 Hex,

int hexOfRGBA(int r,int g,int b,{double opacity=1}) 
    { 
          r = (r<0)?-r:r;
          g = (g<0)?-g:g;
          b = (b<0)?-b:b;
          opacity = (opacity<0)?-opacity:opacity;
          opacity = (opacity>1)?255:opacity*255;
          r = (r>255)?255:r;
          g = (g>255)?255:g;
          b = (b>255)?255:b;
          int a = opacity.toInt();
          return int.parse('0x${a.toRadixString(16)}${r.toRadixString(16)}${g.toRadixString(16)}${b.toRadixString(16)}');
    }
Run Code Online (Sandbox Code Playgroud)

用法:

    Color(hexOfRGBA(0,0,0,opacity: 0.7)); 

Run Code Online (Sandbox Code Playgroud)

但是,出于某种原因,如果您想保持用例的具体性,

您可以使用以下函数将 RGB 转换为 Hex(不透明),

int hexOfRGB(int r,int g,int b) 
    { 
      r = (r<0)?-r:r;
      g = (g<0)?-g:g;
      b = (b<0)?-b:b;
      r = (r>255)?255:r;
      g = (g>255)?255:g;
      b = (b>255)?255:b;
      return int.parse('0xff${r.toRadixString(16)}${g.toRadixString(16)}${b.toRadixString(16)}');
    }
Run Code Online (Sandbox Code Playgroud)

用法:

Color(hexOfRGB(255,255,255)); 
Run Code Online (Sandbox Code Playgroud)

如果你想强制包含透明度(即RGBA),

   int hexOfRGBA(int r,int g,int b,double opacity) 
        { 
         r = (r<0)?-r:r;
          g = (g<0)?-g:g;
          b = (b<0)?-b:b;
          opacity = (opacity<0)?-opacity:opacity;
          opacity = (opacity>1)?255:opacity*255;
          r = (r>255)?255:r;
          g = (g>255)?255:g;
          b = (b>255)?255:b;
          int a = opacity.toInt();
          return int.parse('0x${a.toRadixString(16)}${r.toRadixString(16)}${g.toRadixString(16)}${b.toRadixString(16)}');
        }
Run Code Online (Sandbox Code Playgroud)

用法:

Color(hexOfRGBA(0,0,0,0.7)); 
Run Code Online (Sandbox Code Playgroud)