ぽぴなび

知って感動した技術情報・生活情報や買ってよかったものの雑記です。

[Flutter] Enumの各要素を文字列に変換する

結論

Enumを拡張して、文字列に変換する関数を追加する。

{Enum名}.{要素名}でも良い場合は、{Enum名}.{要素名}.toString()で得られる。

import 'package:flutter/foundation.dart';

enum Animal {
  dog,
  cat,
  bird,
}

/******************************************/
extension on Animal {
  String get string => describeEnum(this);
}
/******************************************/

void main() {
  print(Animal.dog.runtimeType);  // -> Animal
  print(Animal.dog);              // -> Animal.dog
  
  print(Animal.dog.toString());   // -> Animal.dog

  /******************************************/
  print(Animal.dog.string.runtimeType); // -> String
  print(Animal.dog.string);             // -> dog
  /******************************************/
}

参考

Dart enum toString is too verbose · Issue #30021 · dart-lang/sdk · GitHub