流在 Future 完成之前返回

时间:2021-02-19 16:56:03

标签: firebase flutter stream future

使用此功能,我可以从 firestore 加载所有新闻。我使用 test-List 进行查询。

Stream<List<News>> getAllNews(List<String> test) {
    return _db
        .collection('news')
        .where('userRoleList', arrayContainsAny: test)
        .orderBy('createdAt', descending: true)
        .snapshots() // oder .get um ein Future zu bekommen
        .map((query) => query.docs)
        .map((snapshot) =>
            snapshot.map((doc) => News.fromJson(doc.data())).toList());
  }

使用此函数,我将 List 传递给前一个函数。但问题是,Stream 会在 Future 完成之前返回。

Stream<List<News>> getAllTheNews() {
    getUser(_auth.currentUser.uid)
        .then((value) => userRoles = value.userRoleList);

    return _firestoreNewsService.getAllNews(userRoles);
  }

是否有任何解决方案,例如在延迟后返回 Stream 或其他什么?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用异步和等待。

Stream<List<News>> getAllTheNews() async {
  final user = await getUser(_auth.currentUser.uid);
  final userRoles = user.userRoleList;

  return _firestoreNewsService.getAllNews(userRoles);
}
相关问题