😽
【Flutter】EnumをFirestoreでいい感じに使う方法(converter)
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
初めてzennに記事を書いたけど、雑すぎたので修正します😂
貴重な記事をありがとうございます。
一つ質問なのです。
このenumの使い方として、
と、なると思うのですが、
というふうに記述することは
enum
ではできないですよね?コメントありがとうございます
下記のような拡張メソッドを作ってあげると良いと思います!