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
相关产品推荐
相关产品推荐

