如何在Flutter中实现Swift风格的十六进制颜色转换?
Flutter 实现十六进制颜色转换(对应Swift版本逻辑)
你的Swift代码是通过扩展UIColor实现8位带#前缀的十六进制颜色(ARGB格式)解析,下面是对应的Flutter实现,逻辑完全对齐:
extension ColorExtension on Color { static Color? fromHex(String hexString) { // 移除字符串开头的# final cleanedHex = hexString.replaceFirst(RegExp(r'^#'), ''); // 校验是否为8位十六进制字符串 if (cleanedHex.length != 8) { return null; } // 尝试将十六进制字符串转为整数 final hexInt = int.tryParse(cleanedHex, radix: 16); if (hexInt == null) { return null; } // 提取ARGB各分量(与Swift代码逻辑一致) final alpha = (hexInt >> 24) & 0xFF; final red = (hexInt >> 16) & 0xFF; final green = (hexInt >> 8) & 0xFF; final blue = hexInt & 0xFF; return Color.fromARGB(alpha, red, green, blue); } }
使用示例
// 对应你给出的#4D0000FF final myColor = ColorExtension.fromHex('#4D0000FF');
说明
- 只处理带
#前缀的8位十六进制字符串(ARGB顺序),不符合格式则返回null - 分量提取逻辑和原Swift代码完全一致,确保转换后的颜色值和iOS端一致
内容的提问来源于stack exchange,提问作者Pihu
相关产品推荐
相关产品推荐

