Slackコミュニティに

無料で参加する

Flutterラボの

プレミアム会員になる

【Dart】EnumへのExtensionを使用してインスタンスから文字列を取得する

2020.10.02


はじめに

enumを使用していて、enumの値を文字列として取得したいと思ったことはありませんか?今回はExtensionを使用してそれを実現させたいと思います。

おすすめコンソール

今回はDartPadというDart専用コンソールを使用してテストします。

DartPad dartpad.dartlang.org

enumの宣言

enumの宣言はClass内では行えないのでグローバル変数と同じように宣言しましょう。今回は三通りで行います。

enum Type {
 A,
 B,
 C
}


ExtensionをTypeに追加

Extension内でTypeの列挙体をKey、文字列をValueとしたMapを作成します。

extension TypeExtension on Type {
 static final typeNames = {
  Type.A: 'type A',
  Type.B: 'type B',
  Type.C: 'type C'
 };
}

ゲッターを追加する

getterでは現在の列挙体の値をMapのKeyとして代入することで文字列が帰ります。

extension TypeExtension on Type {
 static final typeNames = {
  Type.A: 'type A',
  Type.B: 'type B',
  Type.C: 'type C'
 };

 String get typeName => typeNames[this];
}


全体図

enum Type {
 A,
 B,
 C
}

extension TypeExtension on Type {
 static final typeNames = {
  Type.A: 'type A',
  Type.B: 'type B',
  Type.C: 'type C'
 };

 String get typeName => typeNames[this];
}

実際にインスタンスから文字列を取得する

enum Type {
A,
B,
C
}

extension TypeExtension on Type {
static final typeNames = {
  Type.A: 'type A',
  Type.B: 'type B',
  Type.C: 'type C'
};

String get typeName => typeNames[this];
}

void main() {
 Type type = Type.A;
 
 print(type.typeName);
}

結果

type A

まとめ

Extensionを使用して、列挙体を文字列として使用する方法を紹介しました。データベースなどで列挙体から分岐を行う際に使用できると思います。





Flutterラボ
hatchoutschool
FlutterとNuxtに関する知識を発信しています! 動画で学べる学習サイト『Flutterラボ』と『Nuxtラボ』を運営 Flutterラボ:https://flutterlabo.tech/