Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从firebase Flatter中提取带有流的嵌套引用_Firebase_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

如何从firebase Flatter中提取带有流的嵌套引用

如何从firebase Flatter中提取带有流的嵌套引用,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,所以我有一个嵌套的集合,我想将数据提取到一个列表中,但我似乎不知道如何将其提取到一个列表中。我一次只能提取一次数据,无法将其放入列表中 这就是逻辑- 用户(集合)->文档(某些文档Id)->我所有的ArtShowClass数据字段 常规(集合)->ShowCollection(某些文档ID)->ShowCollection->(某些文档ID)->存储对该用户文档引用的引用的数据类型引用字段 更多的解释 /User/y7qg9iwvceegp47qgzvvl8u0ak1/Posts/2020-

所以我有一个嵌套的集合,我想将数据提取到一个列表中,但我似乎不知道如何将其提取到一个列表中。我一次只能提取一次数据,无法将其放入列表中

这就是逻辑- 用户(集合)->文档(某些文档Id)->我所有的ArtShowClass数据字段

常规(集合)->ShowCollection(某些文档ID)->ShowCollection->(某些文档ID)->存储对该用户文档引用的引用的数据类型引用字段

更多的解释

/User/y7qg9iwvceegp47qgzvvl8u0ak1/Posts/2020-02-22 19:44:45.409573 /User/y7qg9iwvceegp47qgzvvl8u0ak1/Posts/2020-02-23 02:03:14.119358

/一般作家/艺术展/展览1/2020-02-22 19:44:45.409573->这已经 的引用数据类型 /User/y7qg9iwvceegp47qgzvvl8u0ak1/Posts/2020-02-22 19:44:45.409573

/通用列表/艺术展/展览1/2020-02-23 02:03:14.119358->这已经 的引用数据类型 /User/y7qg9iwvceegp47qgzvvl8u0ak1/Posts/2020-02-23 02:03:14.119358

我能够编写代码来获取列表视图中的数据并进行打印。但我并不希望这样,我希望将所有数据提取到一个列表中,然后将其发送到另一个小部件

这就是我把它们打印成某种列表的方法

final CollectionReference exploreCollection = Firestore.instance.collection('GeneralList');

> Widget build(BuildContext context) {
>     User user = Provider.of<User>(context);
>     String sdfdsfdf;
>     var explorer = exploreCollection.document("Art Shows").collection("Shows 1").snapshots();
>     return StreamBuilder<QuerySnapshot>
>     (
>       stream: explorer,
>       builder: (context, snapshot){
>         if (!snapshot.hasData)
>           return Text("Loading data...", style: TextStyle(color: Colors.white),);
>         
>         return ListView(children: snapshot.data.documents.map((document)
>         {
>           DocumentReference documentReference = document.data['ref']; 
>           //Stream<ArtShowClass> sdfd = documentReference.snapshots().map(_showsHelperFromSnapShot);
>           return StreamBuilder<DocumentSnapshot>(
>             stream: documentReference.snapshots(),
>             builder: (context, snapshot) {
> 
>               if (!snapshot.hasData) return Text("Loading...");
>                 ArtShowClass sdfd = ArtShowClass(
>                   userHandle: snapshot.data['userHandle'] ?? '',
>                   artShowTitle: snapshot.data['artShowTitle'] ?? '',
>                   artistName: snapshot.data['artistName'] ?? '',
>                   artShowAddress: snapshot.data['artShowAddress'] ?? '',
>                   artShowDescription: snapshot.data['artShowDescription'] ?? '',
>                   artShowDate: snapshot.data['artShowDate'] ?? '',
>                   artShowTime: snapshot.data['artShowTime'] ?? '',
>                   websiteLink: snapshot.data['websiteLink'] ?? '',
>                   email: snapshot.data['email'] ?? '',
>                   phoneNumber: snapshot.data['phoneNumber'] ?? '',
>                   pictureName: snapshot.data['pictureName'] ?? '',
>                   genre: snapshot.data['genre'] ?? '',
>                   ticketAmount: snapshot.data['ticketAmount'] ?? 0
>                 );
>               sdfdsfdf = snapshot.data['email'];
>               return Text("${snapshot.data['email']}", style: TextStyle(color: Colors.red),);
>             },
>           );
>         }).toList());
>       },
>     );   }
final CollectionReference exploreCollection=Firestore.instance.collection('GeneralList');
>小部件构建(构建上下文){
>User=Provider.of(上下文);
>字符串sdfdsfdf;
>var explorer=exploreCollection.document(“艺术展”).collection(“Shows 1”).snapshots();
>返回流生成器
>     (
>流:explorer,
>生成器:(上下文,快照){
>如果(!snapshot.hasData)
>返回文本(“加载数据…”,样式:TextStyle(颜色:Colors.white),);
>         
>返回ListView(子项:snapshot.data.documents.map((文档)
>         {
>DocumentReference=document.data['ref'];
>//Stream sdfd=documentReference.snapshots().map(\u showshellperfromsnapshot);
>返回流生成器(
>流:documentReference.snapshots(),
>生成器:(上下文,快照){
> 
>如果(!snapshot.hasData)返回文本(“正在加载…”);
>ArtShowClass sdfd=ArtShowClass(
>userHandle:snapshot.data['userHandle']??',
>artShowTitle:snapshot.data['artShowTitle']??“,
>artistName:snapshot.data['artistName']??“,
>artShowAddress:snapshot.data['artShowAddress']??“,
>artShowDescription:snapshot.data['artShowDescription']??“,
>artShowDate:snapshot.data['artShowDate']??“,
>artShowTime:snapshot.data['artShowTime']??“,
>websiteLink:snapshot.data['websiteLink']??“,
>电子邮件:快照。数据['email']??“,
>phoneNumber:snapshot.data['phoneNumber']??',
>pictureName:snapshot.data['pictureName']??“,
>类型:快照。数据['genre']??“,
>ticketmount:snapshot.data['ticketmount']?0
>                 );
>sdfdsfdf=snapshot.data['email'];
>返回文本(${snapshot.data['email']}),样式:TextStyle(颜色:Colors.red);
>             },
>           );
>}).toList());
>       },
>     );   }

谢谢您的帮助。

有一些方法可以从嵌套集合返回信息

我已经进行了一些搜索,我可以在社区中找到一些不错的帖子,这些帖子可能会对你有所帮助——因为每一篇都是针对一个特定案例的,我相信你检查一下,应该会给你提供一个更好的概览,因为你更了解自己的结构。下面两个问题都被接受并解决了他们的问题,所以我建议你看看


如果这些信息对你有帮助,请告诉我

非常感谢。我想出来了。我认为我的逻辑思维是错误的,我认为流是我可以随时结束的东西,但我需要做我想做的事情,同时不断地流。我使用silvergrid.count,然后在里面有一个流生成器来为Return流式处理我的数据,很高兴听到你能解决这个问题!感谢您提供解决问题的方法,@AdeojoKiibati。如果你认为我的答案对你有帮助,请考虑投票或接受它。@ AdeojoKiibati,如果你能在这里分享一些代码,那就太好了。谢谢