获取与用户 ID 匹配的用户 post:Flutter

Fetch users post that matches user ID : Flutter

伙计们,我正忙于将用 Java 编写的 android 应用程序迁移到 flutter,但我遇到了问题。

下面是我在转换为 flutter 时遇到的困难的代码。有什么办法可以转换吗

posts_ref = db.ref('Posts');
      posts_ref.onValue.listen((e) {
        DataSnapshot datasnapshot = e.snapshot;
        int i = 0;
        if(datasnapshot.numChildren() != null){
          Post post = datasnapshot.val();
          if(post.publisher == user.uid){
            i++;

            posts = i.toString();

          }
        }
      });

下面是我的 android 应用程序中的 Java 代码。

private void getNrPosts(){
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Posts");
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NotNull DataSnapshot dataSnapshot) {
                int i = 0;
                for (DataSnapshot snapshot : dataSnapshot.getChildren()){
                    Post post = snapshot.getValue(Post.class);
                    if (post.getPublisher().equals(firebaseUser.getUid())){
                        i++;
                    }
                }
                posts.setText(MessageFormat.format("{0}", i));
            }

            @Override
            public void onCancelled(@NotNull DatabaseError databaseError) {

            }
        });
  }

所有帮助都将非常有用,在此先感谢您!

问题是实时数据库的 Flutter 库没有直接等效于:

for (DataSnapshot snapshot : dataSnapshot.getChildren()){

图书馆的回购协议中有一个 feature request,但它看起来已经关闭了。

与此同时,您可以监听 onChild... 事件来完成同样的事情。或者,您可以使用库中的 FirebaseList 来完成相同的操作。

请在此处查看我较长的回答,以获取两者的示例: