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

Dart中如何重写enum枚举类的toString方法?

Dart枚举自定义toString输出方案

Dart支持重写枚举的toString方法,你可以通过以下方式实现仅输出枚举值本身的需求:

方案1:增强枚举实现(推荐,Dart 2.17及以上版本可用)

Dart 2.17引入的增强枚举特性支持直接在枚举内部重写成员方法:

enum Style {
  italic,
  bold,
  underline;

  @override
  String toString() {
    // 枚举内置name属性直接返回不带类名的枚举值字符串
    return name;
  }
}

调用效果:

void main() {
  print(Style.italic.toString()); // 输出:italic
  print(Style.bold); // 直接打印默认调用toString,输出:bold
}

方案2:扩展方法实现(兼容低版本Dart)

如果使用的Dart版本低于2.17,可以通过扩展方法实现自定义输出:

enum Style {italic, bold, underline}

extension StyleExtension on Style {
  String toCustomString() {
    // Dart 2.15及以上版本可直接使用name属性
    return name;
    // 更老版本兼容写法:return toString().split('.').last;
  }
}

调用效果:

void main() {
  print(Style.italic.toCustomString()); // 输出:italic
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 11:54:01