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

Flutter如何格式化API返回文本:将Name.MAGIC转为Magic

解决Flutter枚举值转友好展示文本的问题

针对你需要把Name.MAGIC转换为Magic展示的需求,这里有几种实用的方案:

方案1:直接字符串处理函数

利用枚举的name属性(直接返回枚举常量名,如MAGIC,无需调用toString()),通过字符串操作格式化:

// 定义格式化函数
String _formatEnumName(Name enumType) {
  final rawName = enumType.name;
  // 首字母大写,其余字母小写
  return rawName[0].toUpperCase() + rawName.substring(1).toLowerCase();
}

// 在Text组件中使用
Text(
  _formatEnumName(finalApi![widget.index].type),
  style: TextStyle(
    color: Colors.white,
    fontWeight: FontWeight.bold,
    fontSize: 15,
  ),
)

方案2:枚举扩展方法(推荐,复用性强)

给枚举类添加扩展方法,让所有枚举实例都能直接调用格式化方法:

// 给Name枚举添加扩展
extension NameDisplayExtension on Name {
  String toDisplayText() {
    final rawName = this.name;
    return rawName[0].toUpperCase() + rawName.substring(1).toLowerCase();
  }
}

// 使用时更简洁
Text(
  finalApi![widget.index].type.toDisplayText(),
  style: TextStyle(
    color: Colors.white,
    fontWeight: FontWeight.bold,
    fontSize: 15,
  ),
)

方案3:支持带下划线的枚举常量(扩展场景)

如果你的枚举有类似FIRE_BALL的命名,需要转换为Fire Ball,可以修改扩展方法:

extension NameDisplayExtension on Name {
  String toDisplayText() {
    final parts = this.name.split('_');
    // 分割每个部分后分别格式化,再用空格拼接
    return parts.map((part) => part[0].toUpperCase() + part.substring(1).toLowerCase()).join(' ');
  }
}

注意事项

  • 优先使用枚举的name属性而非toString(),因为toString()返回的是类名.常量名的格式,一旦类名修改会导致格式化失败;而name是枚举的内置属性,直接返回常量标识符,更稳定可靠。

内容的提问来源于stack exchange,提问作者yuuu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:05:30