質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

解決済

1回答

2108閲覧

Flutter FireStore DocumentReferenceを取得したい

退会済みユーザー

退会済みユーザー

総合スコア0

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2020/05/07 10:47

編集2020/05/07 13:55

DocumentReference を取得したい

Flutter初心者です。。

firestoreに置いているデータを取得するために下記のパッケージを使用して
シリアライズ(?)(fromJson, toJson)を行っています。

json_serializable
json_annotation

firestoreのドキュメント内にDocumentReferenceがあるのですが上記のパッケージはそれに対応しておらず、
現在DocumentReference部分を手書きしているのですがうまく変換できていません。

こちらの記事(Firestore DocumentReference Serialization)も読んでみましたが、
そもそもDocumentReferenceStringとしても取得できていないため解決にいたりませんでした。

firestoreからのデータ取得にはcloud_firestoreパッケージを使用しています。

.

シリアライズの書き方もデータ取得の方法も誤っているかもしれません。。
不勉強で申し訳ありませんが解決策またはそのヒントでもいいので
ご教授いただけないでしょうか?
よろしくお願い申し上げます。。。

以下コードです。
(MVVMのような設計になっており、
modelでシリアライズ等してviewModelでfirestoreのデータを取得するようにしています。)
(コードは簡易版です)

<pubspec.yaml> dependencies: cloud_firestore: ^0.13.0+1 json_annotation: ^3.0.1 dev_dependencies: json_serializable: ^3.2.5

model

1import 'package:cloud_firestore/cloud_firestore.dart'; 2import 'package:json_annotation/json_annotation.dart'; 3 4part 'A.g.dart'; 5 6@JsonSerializable(explicitToJson: true) 7class A{ 8 final DocumentReference docRef; 9 10 const A({ 11 this.docRef, 12 }); 13 14 factory A.fromJson(Map<String, dynamic> json) => _$AFromJson(json); 15 Map<String, dynamic> toJson() => _$AToJson(this); 16}
// GENERATED CODE - DO NOT MODIFY BY HAND part of 'A.dart'; // ************************************************************************** // JsonSerializableGenerator // ************************************************************************** Honey _$AFromJson(Map<String, dynamic> json) { return A( docRef: json['docRef'] as DocumentReference, ); } Map<String, dynamic> _$AToJson(A instance) => <String, dynamic>{ 'docRef': instance.docRef, };

viewModel

1import 'package:cloud_firestore/cloud_firestore.dart'; 2import 'package:flutter/material.dart'; 3import '../models/A.dart'; 4 5class AViewModel{ 6 7 fechA() { 8 databaseReference 9 .collection("A") 10 .getDocuments() 11 .then((QuerySnapshot snapshot) { 12 snapshot.documents.forEach((element) { print('${element.data}'); }); 13 }); 14 } 15}

debugConsoleLog

1flutter: {docRef: Instance of 'DocumentReference'}

試したこと

  • こちらを参考に、これのDocumentReference, String バージョンを行おうとしてtoJson部分のコードが書けず失敗
  • 上記のコードのmodel内のfinal DocumentReferenceas DocumentReference 部分を ~ String として行ったが、ビルド失敗(_CastErrorが出て自動でのシリアライズ失敗)

環境
macOS Catalina 10.15.4
VSCode 1.40.1
Flutter Channel beta, v1.17.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

model

1 2class A { 3 4... 5 6@DocumentReferenceJsonConverter() 7 final DocumentReference docRef; 8 9... 10 11} 12

とすることで、エラーにならずdocRefを取得できるようでした。

投稿2020/05/19 08:29

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問