Flutter(dart)でEnumの使い方@初心者

2023/03/19に公開

はじめに

文字列をプロジェクト内で書くと修正時にあっちらこっちらで修正しなきゃいけなるなるので、
enumにまとめてしまえ!っていうのがありまして今回記事にした経緯です。

ただ筆者も業界ぺーぺーで使った事がなかったので、メモで残す意味も込めて投稿です。

今回はSportというEnumを作成して、どのように使うのか簡単にまとめてみました。

enum作成

さっそく下記のように作成します。

enum Sport {
 /// サッカー
  football,
  /// 野球
  baseball,
  /// バスケット
  basketball,
  /// バレーボール
  volleyball,
  /// その他
  other,
}

今度はSportのenumから値を取得するメソッドのゲッター(get)でfamousLeagueを作成。
同じようにvaluも作成。

String get famousLeague {
    switch (this) {
      case Sport.football:
        return 'プレミアリーグ';
      case Sport.baseball:
        return 'メジャーリーグ';
      case Sport.basketball:
        return 'ナショナル・バスケットボール・アソシエーション';
      case Sport.volleyball:
        return 'セリエA';
      case Sport.other:
        return 'その他のスポーツリーグ';
    }
  }
  
 int get value {
    switch (this) {
      case Sport.football:
        return 1;
      case Sport.baseball:
        return 2;
      case Sport.basketball:
        return 3;
      case Sport.volleyball:
        return 4;
      case Sport.other:
        return 5;
    }
  }

今まで作成したSportのEnumと、getterのfamousLeagueとvalueを使用するSportCategoryクラスでまとめる。

class SportCategoryConverter {
  //intからSportのリーグ名の取得
  String getSportStr(int value) {
    if (value == 0) {
      return '';
    }
    return Sport.values
        .firstWhere(
          (element) => element.value == value,
        )
        .famousLeague;
  }
  
  //StringからSportのリーグ名のvalueを取得
  int getSportValue(String str) {
    if (str.isEmpty) {
      return 0;
    }
    return Sport.values
        .firstWhere(
          (element) => element.famousLeague == str,
        )
        .value;
  }
 }
 
 print(SportCategoryConverter.getSportStr(1)) /// メジャーリーグ
 print(SportCategoryConverter.getSportValue(セリエA)) /// 4

リストのfirstWhereを使用して引数に合うStrigを取得するメソッドを作成して終わり。

intとStringの値でenumの値をとる簡単なメソッドでした。
同じように作成すれば、色々と使えそう。

Flutterで簡単にアプリ作成したので確認したい方はこちらから
enumプロジェクト git

Discussion