提取与用户ID相匹配的用户帖子:Flutter

时间:2020-10-27 22:57:17

标签: firebase flutter firebase-realtime-database flutter-web

我正在忙于迁移用Java编写的android应用程序,但我遇到了问题。

下面是我正在努力转换为颤动的代码。有什么办法可以转换它。

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) {

            }
        });
  }

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

1 个答案:

答案 0 :(得分:0)

问题在于,实时数据库Flutter库没有以下项的直接等效项:

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

该库的存储库中有一个feature request,但似乎已关闭。

在此期间,您可以侦听onChild...事件以完成相同操作。另外,您可以使用库中的FirebaseList完成相同的工作。

有关以下两个示例,请参见我的较长答案:Flutter: Firebase Real-Time database orderByChild has no impact on query result