我正在忙于迁移用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) {
}
});
}
所有帮助将非常有用,在此先感谢您!
答案 0 :(得分:0)
问题在于,实时数据库Flutter库没有以下项的直接等效项:
for (DataSnapshot snapshot : dataSnapshot.getChildren()){
该库的存储库中有一个feature request,但似乎已关闭。
在此期间,您可以侦听onChild...
事件以完成相同操作。另外,您可以使用库中的FirebaseList
完成相同的工作。
有关以下两个示例,请参见我的较长答案:Flutter: Firebase Real-Time database orderByChild has no impact on query result