You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 09:35:33