Flutter使用Stream检索Firestore集合

节拍器

我想在检索整个集合firestore使用StreamBuilder,但我根据我的飞镖模式陷入了映射结果

这是dart模型thread.dart:

class Thread {
  final String threadTitle;
  final String threadContent;
  final String threadFlair;
  final String threadTimestamp;
  final List<String> threadLikedBy;
  final List<String> originalPoster;

  Thread({
    this.threadTitle,
    this.threadContent,
    this.threadTimestamp,
    this.threadFlair,
    this.threadLikedBy,
    this.originalPoster,
  });

  factory Thread.fromMap(Map<String, dynamic> map) => Thread(
    threadTitle: map["threadTitle"],
    threadContent: map["threadContent"],
    threadFlair: map["threadFlair"],
    threadTimestamp: map["threadTimestamp"],
    threadLikedBy: List<String>.from(map["threadLikedBy"].map((x) => x)),
    originalPoster: List<String>.from(map["originalPoster"].map((x) => x)),
  );

  Map<String, dynamic> toMap() => {
    "threadTitle": threadTitle,
    "threadContent": threadContent,
    "threadFlair": threadFlair,
    "threadTimestamp": threadTimestamp,
    "threadLikedBy": List<dynamic>.from(threadLikedBy.map((x) => x)),
    "originalPoster": List<dynamic>.from(originalPoster.map((x) => x)),
  };
}

这是我在列表视图中显示结果的小部件:

class _ThreadsBodyState extends State<ThreadsBody> {
  final threads = _mThreadService.retriveData(path: "posts", builder: (data) => Thread.fromMap(data));
  @override
  Widget build(BuildContext context) {
    return Container(
      child: StreamBuilder<Object>(
        stream: threads,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return ListView.builder(
              itemBuilder: (BuildContext context, int index) {
                Thread thrd = (snapshot.data as List)[index];
                return ThreadCard(thread: thrd,);
              },
            );
           } else {return Text('no data');}
      }),
    );
  }
}

这是posts_service.dart,其中有Stream功能

//After restructuring my model and adding: 
//List<String> threadLikedBy; and List<String> originalPoster;
//this method works no more

Stream<List<T>> retrieveData<T>({
  @required String path,
  @required T builder(Map<String, dynamic> data),
}) {
  final reference = firestoreInstance.collection(path);
  final snapshots = reference.snapshots();
  return snapshots.map((snapshot) => snapshot.docs.map((snapshot) => builder(snapshot.data())).toList());
}

看来我是在弄乱返回中的映射,但我无法确切弄清楚如何解决它。

索瓦尔德·奥拉夫森

在您的“ posts_services.dart”中添加以下功能:

Future<QuerySnapshot> fetchThreads() async {
    return await firestoreInstance.collection('posts').get();
}

现在在您构建的小部件中,您的ListView外观应如下所示:

class _ThreadsBodyState extends State<ThreadsBody> {
  @override
  Widget build(BuildContext context) {
    return Container(
      child: FutureBuilder<QuerySnapshot>(
        future: youService.fetchThreads(),
        builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
          if (snapshot.hasData) {
            return ListView.builder(
              itemCount: snapshot.data.size, //to retrieve the size
              itemBuilder: (BuildContext context, int index) {
                Thread thrd = Thread.fromMap(snapshot.data.docs[index].data());
                return ThreadCard(thread: thrd,);
              },
            );
           } else {return Text('no data');}
      }),
    );
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法从Cloud Firestore检索Flutter中的多个集合

来自分类Dev

无法使用Flutter从Firestore检索文档

来自分类Dev

如何根据 dart/flutter 中的日期从 firebase/firestore 集合中检索 1 个文档?

来自分类Dev

如何使用Flutter在Firestore中的uid文档中创建集合?

来自分类Dev

如何使用Flutter获取Firestore中每个集合的子集合

来自分类Dev

使用Java Stream迭代集合的集合?

来自分类Dev

Firestore集合查询在Flutter中作为流

来自分类Dev

Flutter Web-获取Firestore集合

来自分类Dev

Firestore / Flutter:查询文档的子集合

来自分类Dev

在Flutter中收听Firestore集合及其子集合

来自分类Dev

如何使用表单验证通过Flutter验证集合Firestore中是否存在文档

来自分类Dev

使用Flutter Firestore插件,对文档中的每个子集合进行操作

来自分类Dev

Flutter&Cloud_Firestore:使用2个“ where”条件时无法检索数据

来自分类Dev

如何使用flutter从Firestore中检索具有其ID的文档

来自分类Dev

Firestore查询多个过滤器以在本机中检索集合

来自分类Dev

如何从 Firestore 检索两个集合下的节点?

来自分类Dev

Flutter Firestore:集合中的特定文档 (Firestore.collection.where)

来自分类Dev

Flutter Firestore尝试使用Stream的方式与我使用QuerySnapshot的方式一样

来自分类Dev

使用LINQ to SQL检索嵌套集合

来自分类Dev

在 StreamBuilder (Flutter) 中检索子集合

来自分类Dev

使用Firestore集合时等待用户ID

来自分类Dev

如何使用 lodash _.filter() 过滤 firestore 集合?

来自分类Dev

Flutter Firestore查询嵌套子集合

来自分类Dev

如何在Cloud Flutter Firestore中处理嵌套集合查询?

来自分类Dev

根据flutter中的数组列表中的值获取Firestore集合

来自分类Dev

使用Kotlin检索数据的Firestore错误

来自分类Dev

使用React检索文档数据Firestore

来自分类Dev

从Firestore检索数据并在GridView.builder flutter中显示

来自分类Dev

Flutter / Firestore-检索产品信息问题

Related 相关文章

  1. 1

    无法从Cloud Firestore检索Flutter中的多个集合

  2. 2

    无法使用Flutter从Firestore检索文档

  3. 3

    如何根据 dart/flutter 中的日期从 firebase/firestore 集合中检索 1 个文档?

  4. 4

    如何使用Flutter在Firestore中的uid文档中创建集合?

  5. 5

    如何使用Flutter获取Firestore中每个集合的子集合

  6. 6

    使用Java Stream迭代集合的集合?

  7. 7

    Firestore集合查询在Flutter中作为流

  8. 8

    Flutter Web-获取Firestore集合

  9. 9

    Firestore / Flutter:查询文档的子集合

  10. 10

    在Flutter中收听Firestore集合及其子集合

  11. 11

    如何使用表单验证通过Flutter验证集合Firestore中是否存在文档

  12. 12

    使用Flutter Firestore插件,对文档中的每个子集合进行操作

  13. 13

    Flutter&Cloud_Firestore:使用2个“ where”条件时无法检索数据

  14. 14

    如何使用flutter从Firestore中检索具有其ID的文档

  15. 15

    Firestore查询多个过滤器以在本机中检索集合

  16. 16

    如何从 Firestore 检索两个集合下的节点?

  17. 17

    Flutter Firestore:集合中的特定文档 (Firestore.collection.where)

  18. 18

    Flutter Firestore尝试使用Stream的方式与我使用QuerySnapshot的方式一样

  19. 19

    使用LINQ to SQL检索嵌套集合

  20. 20

    在 StreamBuilder (Flutter) 中检索子集合

  21. 21

    使用Firestore集合时等待用户ID

  22. 22

    如何使用 lodash _.filter() 过滤 firestore 集合?

  23. 23

    Flutter Firestore查询嵌套子集合

  24. 24

    如何在Cloud Flutter Firestore中处理嵌套集合查询?

  25. 25

    根据flutter中的数组列表中的值获取Firestore集合

  26. 26

    使用Kotlin检索数据的Firestore错误

  27. 27

    使用React检索文档数据Firestore

  28. 28

    从Firestore检索数据并在GridView.builder flutter中显示

  29. 29

    Flutter / Firestore-检索产品信息问题

热门标签

归档