ssgaolai
@ssgaolai

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

flutter、firebase

解決したいこと

flutterでfirebaseからデータを持ってくる際の方法についてです。
現在は以下のようにとってきています。

Map<String, dynamic> data = document.data()! as Map<String, dynamic>;

結果↓
 {name: souta, payment: 3000}

これを以下のようにしてとりたいです。

{souta: 3000.0}

firebase上ではドキュメント内に二つのフィールドがあり、

"name":"souta"(String)
"payment":3000(number)

のような形でデータを格納しています。

初心者ですがよろしくお願いします。

0

2Answer

3000というのが、整数というくくり(型)で格納されているのであれば、データ取り出したタイミングで既に小数点は存在しないはずです。
paymentの型を小数まで扱える型にするしかないと思います。

(小数点以下を必要としている理由が気になりました。)

0Like

Comments

  1. @ssgaolai

    Questioner

    回答ありがとうございます。
    返事が遅くなり申し訳ありません。無事解決することができました。

意図は分かりませんが、こんな感じでしょうか?

個人的にはクラス型で定義したほうが扱いやすいかと思います。
以下はfreezedパッケージを使用してドキュメントをクラスで定義した例です。

import 'package:freezed_annotation/freezed_annotation.dart';

part 'your_data.freezed.dart';
part 'your_data.g.dart';

@freezed
class YourData with _$YourData {
  const factory YourData({
    required String name,
    required double payment, // 3000.0だったのでdoubleとしました
  }) = _YourData;

  factory YourData.fromJson(Map<String, dynamic> json) => _$YourDataFromJson(json);
}

Map<String, dynamic> data = document.data()! as Map<String, dynamic>;

YourData yourData = YourData.fromJson(data);
print(yourData.name); // souta:string
print(yourData.payment); // 3000.0
0Like

Comments

  1. @ssgaolai

    Questioner

    回答ありがとうございます。
    返事が遅くなり申し訳ありません。無事解決しました。

Your answer might help someone💌