Help us understand the problem. What is going on with this article?

FlutterでColorをFirestoreに保存して、Colorとして取り出す

Firestoreではもちろん、Colorという型は保存できません。ですが、FirestoreにColorを保存したい場合どうしたらいいかを考えました。

保存するときはStringで保存する

まずは保存するときは、Stringで保存しました。
FlutterのColorクラスはtoString()にしたときに、いい感じにカラーコードに変換してくれます。

Flutter内部で下記のような実装になっています。

@override
  String toString() => 'Color(0x${value.toRadixString(16).padLeft(8, '0')})';

そこでFirestoreにはこのまま保存しました。

こんな感じ

MaterialColor(primary value: Color(0xff2196f3))

取り出すときはIntで取り出す。

取り出すときはIntで取り出しました。

int get color {
    String valueString = _color.split('(0x')[1].split(')')[0];
    return int.parse(valueString, radix: 16);
  }

そして取り出したら、ColorクラスにこのIntを渡せば、表示されます。

Color(widget.model.color)

以上です。

superman9387
I love Flutter 🔥❤️ 業務ではAndroidを書いていて、個人ではFlutterを書いています。 Flutterを愛しています。
https://note.mu/shogoyamada
zozotech
70億人のファッションを技術の力で変えていく
https://tech.zozo.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away