Flutter 16進位制數字符串轉 int
Flutter 中 Color 接收 int 型十六進位制數,如果顏色資料是從後臺獲取,則一般拿到字串,此時需要轉為 int
(new) Color(int value) → Color dart.ui Construct a color from the lower 32 bits of an [int]. The bits are interpreted as follows: Bits 24-31 are the alpha value. Bits 16-23 are the red value. Bits 8-15 are the green value. Bits 0-7 are the blue value. In other words, if AA is the alpha value in hex, RR the red value in hex, GG the green value in hex, and BB the blue value in hex, a color can be expressed as const Color(0xAARRGGBB). For example, to get a fully opaque orange, you would use const Color(0xFFFF9000) (FF for the alpha, FF for the red, 90 for the green, and 00 for the blue). 複製程式碼
int _hexToInt(String hex) { int val = 0; int len = hex.length; for (int i = 0; i < len; i++) { int hexDigit = hex.codeUnitAt(i); if (hexDigit >= 48 && hexDigit <= 57) { val += (hexDigit - 48) * (1 << (4 * (len - 1 - i))); } else if (hexDigit >= 65 && hexDigit <= 70) { // A..F val += (hexDigit - 55) * (1 << (4 * (len - 1 - i))); } else if (hexDigit >= 97 && hexDigit <= 102) { // a..f val += (hexDigit - 87) * (1 << (4 * (len - 1 - i))); } else { throw new FormatException("Invalid hexadecimal value"); } } return val; } 複製程式碼