😽

【Flutter】EnumをFirestoreでいい感じに使う方法(converter)

2023/01/10に公開
1

enumを使ったものの、そのまま更新したくない。

たとえば、果物を管理するEnumがあるとする。

fruit
enum Fruit {
  none,
  apple,
  orange;
}

これをそのままFireStoreに入れるとなんか気持ち悪い。
String型は容量も圧迫するので、避けたい。

だからこうする。

fruit
enum Fruit {
  apple(1, "りんご"),
  orange(2, "オレンジ");

  final int value;
  final String name;

  const Fruit(this.value, this.name);

  
  String toString() => name;

  int toJson() => value;

  factory Fruit.fromJson(int? json) {
    switch (json) {
      case 1:
        return Fruit.apple;
      case 2:
        return Fruit.orange;
      case null:
      default:
        return Fruit.none;
    }
  }
}

Firestoreの更新時にtoJson、Firestoreからの取得時にfromJson、
画面に表示するときは、toStringが使えて幸せになれそう。

Discussion

ログインするとコメントできます