【发布时间】:2021-12-18 00:11:50
【问题描述】:
自从我试图弄清楚如何对隐藏它的用户隐藏隐藏的帖子已经有好几天了。我尝试使用 .where() 进行过滤,但后来我陷入了思考如何使用 userId 过滤它的问题,该 userId 不在 firestore 帖子集合的数组中。然后我尝试将规则设置为
match /reviews/{review}{
allow read: if request.auth != null && !(request.auth.uid in
resource.data.hidingUserId)}
但这并没有奏效。没有收到任何帖子,因为权限被完全拒绝。
所以现在我正在尝试以下方法:
hidePost(BuildContext context) async {
setState(() {
isVisible = !isVisible;
});
await postRef.doc(widget.post.postId).update({'hidingUserId':
FieldValue.arrayUnion([FirebaseAuth.instance.currentUser.uid])});
showInSnackBar(context, Languages.of(context).postHidden);
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.setBool("visibility", !isVisible);
}
getVisibility() async{
final SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getBool("visibility");
}
然后在我的小部件中:
child: Visibility(
visible: getVisibility(),
child: Container(
decoration: BoxDecoration(
color: Colors.white60,
borderRadius: BorderRadius.circular(15.0),
),
child: Column( blahblablah...)
我得到的错误是 getVisibility() 方法上的type 'Future<dynamic>' is not a subtype of type 'bool'。也许我需要使用 FutureBuilder,但我不知道在哪里使用它。请帮我解决这个问题?非常感谢!
【问题讨论】:
标签: flutter sharedpreferences flutter-futurebuilder