基于用户权限firebase的隐藏和显示小部件和按钮的管理员访问



我正在构建对客户端的管理员访问权限。我需要约束的可见性之一是按钮的可见性。

将用户访问权限更改为管理员时,按钮不会重新出现。依赖布尔条件如下所述。

bool _show = false;
void showFloationButton() {
setState(() {
_show = true;
});
}
void hideFloationButton() {
setState(() {
_show = false;
});
}
void userAdminAccess() async {
FirebaseUser currentUser = await FirebaseAuth.instance.currentUser();
if ( currentUser != null) {
Firestore.instance
.collection('Users')
.where('isAdmin', isEqualTo: true);
} return showFloationButton();
}

您的代码看起来想要执行查询,但实际上并没有执行。它只是在构建一个query对象。您必须使用get()来实际执行该查询,并等待响应:

var querySnapshot = await Firestore.instance
.collection('Users')
.where('isAdmin', isEqualTo: true)
.get();
if (querySnapshot.size > 0) {
// there is at least one document returned by this query
}
else {
// there are not matching documents
}

我建议在文档中学习更多关于如何执行查询的信息。

请注意,您所做的工作可能非常昂贵。在我看来,您可能应该为用户获取一个由其UID标识的文档,并在该文档中查找字段。获取所有管理员可能会导致大量不必要的读取。

最新更新