[言語仕様]文字列をenumに変換する

動作環境: Flutter 2.8.1 Dart 2.15.1
LINEでこのページを共有するTwitterでこのページを共有するこのページをはてなブックマークに追加

文字列をenumに変換するケースを考えてみましょう。
やり方としては文字列を受け取ったら、enumの値をそれぞれ文字列に変換して受け取った文字列と突き合わせればよさそうです。

その変換を以下のように書いてみました。
Fruitというenumを作り、そのヘルパーメソッドを定義しています。

lib/main.dart
enum Fruit { apple, orange, banana }
class FruitHelper {
static Fruit parseFromString(String value) {
return Fruit.values.firstWhere((item) {
return item.toString() == value;
}, orElse: () => Fruit.apple);
}
}
void main() {
print(FruitHelper.parseFromString('Fruit.banana'));
}

使い方は簡単で、parseFromStringメソッドに文字列を渡すだけです。
該当するenumが見つかったときはそのenumを返します。

このヘルパーを利用する側からすれば結果的にenumに変換されたように見えるでしょう。
たとえば、enumの値をデータベースやファイルなどに保存したいときなどにenumのままでは保存できません。

数値や文字列として保存することになりますが、そこから復帰させてプログラム内で使う場合はenumとして取り扱い、というニーズは結構あると思います。

こうしたヘルパーを用意しておくと、そうした変換ニーズにも対応できますね。
ちなみに、enumから文字列に変換したいときはtoString()を実行すればOKです。
enumから文字列に変換する方はDartに標準で備わっている機能になります。

*「Run」を押すと実行できます。