Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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
Android 颤振载荷列表视图项异步_Android_Firebase_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

Android 颤振载荷列表视图项异步

Android 颤振载荷列表视图项异步,android,firebase,flutter,dart,google-cloud-firestore,Android,Firebase,Flutter,Dart,Google Cloud Firestore,如何在每个异步任务之后刷新ListView项 我在firebase上有两个收藏需要访问,如果有其他方法,请提供建议,因为我是firebase和Flatter的新手 我的用户内部有一个名为收藏夹的集合,其中包含用户id字段(与文档id相同),我加载的ListView包含所有用户数据,但仅包含与该id匹配的数据(以避免无理由加载例如1000个用户=$$) 根据我的代码和运行窗口上的测试,我得到了每个用户的值,但我在应用程序上的ListView显示为空白。我试图放置一个设置状态,但应用程序会不断刷新

如何在每个异步任务之后刷新ListView项

我在firebase上有两个收藏需要访问,如果有其他方法,请提供建议,因为我是firebase和Flatter的新手

我的
用户
内部有一个名为
收藏夹
的集合,其中包含
用户id
字段(与文档id相同),我加载的ListView包含所有用户数据,但仅包含与该id匹配的数据(以避免无理由加载例如1000个用户=$$)

根据我的代码和运行窗口上的测试,我得到了每个用户的值,但我在应用程序上的ListView显示为空白。我试图放置一个设置状态,但应用程序会不断刷新

我试图创建一个单独的函数,但我无法让它返回文档快照列表

多谢各位

FutureBuilder(
              future: Firestore.instance.collection('users').document(id).collection('favorites').getDocuments(),
              builder: (context, snapshot) {
                if (snapshot.hasData) {
                  List<DocumentSnapshot> userDocs = [];
                  snapshot.data.documents.forEach((doc) async {
                    await Firestore.instance.collection('users').document(doc.documentID).get().then((user) {
                      userDocs.add(user);
                    });
                  });
                  return ListView(
                    children: userDocs.map((document) {
                      return buildItem(context, document);
                    }).toList(),
                  );
                }
              },
            ),
FutureBuilder(
future:Firestore.instance.collection('users').document(id).collection('favorites').getDocuments(),
生成器:(上下文,快照){
if(snapshot.hasData){
列出userDocs=[];
snapshot.data.documents.forEach((doc)异步{
等待Firestore.instance.collection('users').document(doc.documentID).get()。然后((user){
userDocs.add(用户);
});
});
返回列表视图(
子项:userDocs.map((文档){
返回构建项(上下文、文档);
}).toList(),
);
}
},
),

所以,在没有任何帮助的情况下,经过几周的研究,我终于完成了

  • StreamBuilder仅获取收藏夹上的文档:

    stream:Firestore.instance.collection('u')。document(id)。collection('f')。snapshots()

  • Builder正在返回一个新的小部件(MessageTile有状态小部件)

    returnmessagetile(ctx:context,doc:snapshot.data.documents[index])

  • 在Statefull小部件中,我返回一个
    FutureBuilder
    ,它只获取与userId匹配的用户:

    future:Firestore.instance.collection('u').doc(doc['userId']).get()


  • 简单对吧

    谢谢你发布你的答案,我想这和我遇到的问题很相似,但我无法解决。我有多个async/await,所以它有点不同,但我希望您的方法能起作用。