EnumをExtensionを使用し拡張することでStringを取得できるようにする方法

エキサイト株式会社の奥田です。 本日はTabViewを作成する際にEnumに紐付いたStringを取得する場合があったため、その方法について記述します。

なぜEnumに紐付いたStringを定義する必要があったか?

今回のケースではTabViewを作成する際にTabの名称をEnumに定義したTypeに紐付けたものにしたかったからです。 Enumの要素一つ、一つに対して紐づくものであり、取り回しがしやすいと感じて、今回のような実装にしました。

定義

それではまずEnum側の定義をしていきます。

enum SampleCategory {
  article,
  user,
}

extension SampleCategoryExt on SampleCategory {
  String get name {
    switch (this) {
      case SearchCategory.article:
        return '記事';
      case SearchCategory.user:
        return 'ユーザー';
    }
  }
}

定義したStringを呼び出す際は下記のように定義します。

final article = SearchCategory.article.name;
final user = SearchCategory.user.name;

print('${article}'); //'記事'
print('${user}'); //'ユーザー'

このように定義したEnumからextensionを使用し拡張することでStringを取得することができました。

まとめ

今回はStringを取得するシンプルな定義にしましたが、widgetやintなどを定義することができます。使用する場面に応じて使い分けることができるので、柔軟に使用することができそうです。 次回は本格的にTabViewの実装部分の記事を書いていこうと思います。

最後に

弊社では絶賛採用強化中です。もしご興味がある方がいましたら下記リンクよりアクセスいただけると幸いです。(カジュアルからもOKです)

www.wantedly.com