Ril*_*ick 3 hex colors type-conversion dart flutter
在 Flutter 中,我想将 RGB 颜色作为 MaterialColor() 构造函数中的 int 主要颜色。如何将 RGB 值转换为格式如下的十六进制 int:0xff-----?抱歉问这个简短的问题,我真的找不到它!
您可以使用以下函数将 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)
| 归档时间: |
|
| 查看次数: |
3205 次 |
| 最近记录: |