【问题标题】:Flutter Listview duplicates random element instead of adding new element on new dataFlutter Listview 复制随机元素而不是在新数据上添加新元素
【发布时间】:2021-05-02 01:27:53
【问题描述】:

我正在尝试使用 Flutter 和 Firebase 创建诸如提要之类的内容,并且我想通过它们的 'postedAt' 值对帖子进行排序,但问题是当我使用 collection.orderBy() 时它无法正常工作。它将新帖子添加到提要的随机位置,并为其提供随机现有帖子的 imageURL(或者我认为它只是复制提要中的一个项目)。我在 Firebase 创建了索引我尝试了两种索引类型都不起作用。奇怪的是,当我在添加完成后从手机添加新帖子时,它工作正常,但在另一部手机上列出时,它会显示所描述的行为。

编辑:当我热重载时它工作正常(最后添加的帖子显示在顶部) 编辑:当我删除 orderBy 方法时问题继续。

StreamBuilder(
    stream: FirebaseFirestore.instance
      .collection("users")
      .doc(FirebaseAuth.instance.currentUser.uid)
      .collection("posts")
      .orderBy('postedAt', descending:true)
      .snapshots(),
    builder: (BuildContext context,AsyncSnapshot<QuerySnapshot> snapshot) {
       if (!snapshot.hasData) {
          return Center(
              child: CircularProgressIndicator(),
              );
        }

        if (snapshot.hasError) {
             print("error:" + snapshot.error.toString());
         }



     List<Post> posts = [];

     posts = snapshot.data.docs.map((postDoc) {
          return Post.fromDoc(postDoc);
      }).toList();

     if (posts.isEmpty) {
         return Center(
            child: Text("No posts"),
          );
     }

     return ListView.builder(
          cacheExtent: 4000,
          itemCount: posts.length,
          itemBuilder: (BuildContext context, int index) {
            return PostWidget(
                post: posts[index],
                );
            },
          );
        },
     )

我的索引:

Composite index single index

文件截图: document ss

【问题讨论】:

  • postedAt - 是timeStamp 字段吗?
  • 您能分享一个示例文档的屏幕截图吗?
  • @Muthu Thavamani 不,它不是时间戳,它是整数 DateTime.now().milisecondssinceepoch
  • 我用文档截图编辑了

标签: firebase flutter google-cloud-firestore feed stream-builder


【解决方案1】:

我解决了这个问题。 我认为如果是复制元素,可能无法将它们分开。并将关键参数添加到PostWidget,这样它就可以工作了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多