コンテンツへスキップ →

Enumから文字列を取得する方法【Dart】

拡張メソッドを使い、Enumからgetterで文字列を取得します。

void main() {
  final picachu = Pokemon.picachu;
  print(picachu.name); // ぴかちゅー
}

enum Pokemon {
  picachu,
  hitokage,
  zenigame,
  hushigidane,
}

extension PokemonExtension on Pokemon {
  String get name {
    switch (this) {
      case Pokemon.picachu:
        return 'ぴかちゅー';
      case Pokemon.hitokage:
        return 'ひとかげ';
      case Pokemon.zenigame:
        return 'ぜにがめ';
      case Pokemon.hushigidane:
        return 'ふしぎだね';
    }
  }
}

getterを他にも用意すれば、文字列以外も取得することができます。

void main() {
  final picachu = Pokemon.picachu;
  print(picachu.name); // ぴかちゅー
  print(picachu.bookIndex); // 25
  print(picachu.type); // <meta charset="utf-8">Type.electric
}

enum Pokemon {
  picachu,
  hitokage,
  zenigame,
  hushigidane,
}

enum Type {
  fire,
  water,
  grass,
  electric,
}

extension PokemonExtension on Pokemon {
  String get name {
    switch (this) {
      case Pokemon.picachu:
        return 'ぴかちゅー';
      case Pokemon.hitokage:
        return 'ひとかげ';
      case Pokemon.zenigame:
        return 'ぜにがめ';
      case Pokemon.hushigidane:
        return 'ふしぎだね';
    }
  }

  int get bookIndex {
    switch (this) {
      case Pokemon.picachu:
        return 025;
      case Pokemon.hitokage:
        return 004;
      case Pokemon.zenigame:
        return 007;
      case Pokemon.hushigidane:
        return 001;
    }
  }

  Type get type {
    switch (this) {
      case Pokemon.picachu:
        return Type.electric;
      case Pokemon.hitokage:
        return Type.fire;
      case Pokemon.zenigame:
        return Type.water;
      case Pokemon.hushigidane:
        return Type.grass;
    }
  }
}

参考

https://dart.dev/guides/language/extension-methods

カテゴリー: Flutter