Flutter 我如何通过cloud_firestore从文档中获取收藏?

Flutter 我如何通过cloud_firestore从文档中获取收藏?,flutter,dart,google-cloud-firestore,Flutter,Dart,Google Cloud Firestore,我可以从集合中获取所有文档,但不知道如何从每个文档获取集合 import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:cloud_firestore/cloud_firestore.dart';

我可以从集合中获取所有文档,但不知道如何从每个文档获取集合

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:location/location.dart';

StreamSubscription<QuerySnapshot> subscription;
List<DocumentSnapshot> wallpapersList;


...


class MapPageState extends State<MapPage> {

  final CollectionReference collectionReference =
  Firestore.instance.collection("users");



  @override
  void initState() {
    // TODO: implement initState
    super.initState();

    print(wallpapersList);

    subscription = collectionReference.snapshots().listen((datasnapshot) {
      setState(() {
        wallpapersList = datasnapshot.documents;

      });
    });
}

...
我的数据库结构是collection->document->collection(带字段)->document->field

使用blow代码,只有我可以获得第一个文档的字段信息,而不是集合

如何从每个第一个文档访问第二个集合

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:location/location.dart';

StreamSubscription<QuerySnapshot> subscription;
List<DocumentSnapshot> wallpapersList;


...


class MapPageState extends State<MapPage> {

  final CollectionReference collectionReference =
  Firestore.instance.collection("users");



  @override
  void initState() {
    // TODO: implement initState
    super.initState();

    print(wallpapersList);

    subscription = collectionReference.snapshots().listen((datasnapshot) {
      setState(() {
        wallpapersList = datasnapshot.documents;

      });
    });
}

...
导入'dart:async';
进口“包装:颤振/材料.省道”;
导入“包:flifter/services.dart”;
导入“包:google_-maps_-flatter/google_-maps_-flatter.dart”;
导入“包:cloud_firestore/cloud_firestore.dart”;
导入“package:location/location.dart”;
流媒体订阅;
名单;
...
类MapPageState扩展了状态{
最终收集参考收集参考=
Firestore.instance.collection(“用户”);
@凌驾
void initState(){
//TODO:实现initState
super.initState();
打印(壁纸列表);
订阅=collectionReference.snapshots().listen((datasnapshot){
设置状态(){
壁纸列表=datasnapshot.documents;
});
});
}
...

构建一个函数来获取所有文档并返回一个
QuerySnapshot

Future<QuerySnapshot> getDocuments() async {
    return await Firestore.instance
        .collection('collectionName')
        .document(referenceFromADocument)
        .collection('otherCollectionName')
        .getDocuments();
  }
Future getDocuments()异步{
return wait Firestore.instance
.collection('collectionName')
.文件(参考文件)
.collection('otherCollectionName')
.getDocuments();
}
在您的小部件中,您可以通过FutureBuilder访问它

return FutureBuilder<QuerySnapshot>(
      future: _viewModel.getDocuments(),
      builder: (context, snapshot) {
        snapshot.data.documents.map((document) {
          if(snapshot.hasData){
            print(document.toString());
            /// Here you can return a Text widget
          }          
        }).toList()),
      }
);
返回FutureBuilder(
未来:_viewModel.getDocuments(),
生成器:(上下文,快照){
snapshot.data.documents.map((文档){
if(snapshot.hasData){
打印(document.toString());
///在这里,您可以返回一个文本小部件
}          
}).toList()),
}
);

希望这有助于

构建一个函数来获取所有文档并返回一个
QuerySnapshot

Future<QuerySnapshot> getDocuments() async {
    return await Firestore.instance
        .collection('collectionName')
        .document(referenceFromADocument)
        .collection('otherCollectionName')
        .getDocuments();
  }
Future getDocuments()异步{
return wait Firestore.instance
.collection('collectionName')
.文件(参考文件)
.collection('otherCollectionName')
.getDocuments();
}
在您的小部件中,您可以通过FutureBuilder访问它

return FutureBuilder<QuerySnapshot>(
      future: _viewModel.getDocuments(),
      builder: (context, snapshot) {
        snapshot.data.documents.map((document) {
          if(snapshot.hasData){
            print(document.toString());
            /// Here you can return a Text widget
          }          
        }).toList()),
      }
);
返回FutureBuilder(
未来:_viewModel.getDocuments(),
生成器:(上下文,快照){
snapshot.data.documents.map((文档){
if(snapshot.hasData){
打印(document.toString());
///在这里,您可以返回一个文本小部件
}          
}).toList()),
}
);

希望这能有所帮助

您可以通过
document.reference.collection(“subcollection”)
DocumentSnapshot
获取子集合

例如:

wallpapersList.reference.collection("subcollection")

您可以通过
document.reference.collection(“子集合”)
DocumentSnapshot
获取子集合

例如:

wallpapersList.reference.collection("subcollection")