Firebase 扑动火基中的相似和不相似特征
我正在尝试使用Firebase在Flitter上构建一个类似的功能。我能够使用事务存储like和删除like。我一直坚持的是,我怎样才能在前端表现出类似的状态Firebase 扑动火基中的相似和不相似特征,firebase,flutter,firebase-realtime-database,google-cloud-firestore,Firebase,Flutter,Firebase Realtime Database,Google Cloud Firestore,我正在尝试使用Firebase在Flitter上构建一个类似的功能。我能够使用事务存储like和删除like。我一直坚持的是,我怎样才能在前端表现出类似的状态 (_isLiked == false) ? IconButton( iconSize: Sizes.s35, color: Colors.black, icon: Icon(Icons.favorite_outline), on
(_isLiked == false)
? IconButton(
iconSize: Sizes.s35,
color: Colors.black,
icon: Icon(Icons.favorite_outline),
onPressed: () {
setState(() {
_isLiked = true;
final like = LikeData(
campaingID: donation.campaignID,
dateTime: Timestamp.now(),
userId: user.uid,
likeId: DateTime.now().toString(),
like: _isLiked,
);
likeService.newLike(donation, like);
});
},
)
: IconButton(
iconSize: Sizes.s35,
color: Colors.green,
icon: Icon(Icons.favorite),
onPressed: () {
setState(() {
likeService.deleteLike(donation, user);
});
},
),
这就是我现在如何将其表示为硬编码的
\u isliked
布尔值。如何从Firebase调用状态?您可能需要添加一个StreamBuilder来监听喜欢/不喜欢的动态变化,我已经为您介绍了以下解决方案
Widget likeWidget(String postId) {
return Column(
children: [
SizedBox(
height: Get.height * 0.022,
width: Get.width * .15,
child: StreamBuilder(
stream: FBCollections.postLikes
.where("post_id", isEqualTo: postId)
.where("user_id", isEqualTo: userData.userEmail)
.snapshots(),
builder:
(context, AsyncSnapshot<QuerySnapshot> snapshotCheckLike) {
if (!snapshotCheckLike.hasData) {
return Container();
} else {
return snapshotCheckLike.data.docs.isEmpty
? IconButton(
icon: Icon(Icons.favorite_outline),
onPressed: () {
final like = LikeData(
campaingID: donation.campaignID,
dateTime: Timestamp.now(),
userId: user.uid,
likeId: DateTime.now().toString(),
like: true,
);
likeService.newLike(donation, like);
},
)
: IconButton(
iconSize: Sizes.s35,
color: Colors.green,
icon: Icon(Icons.favorite),
onPressed: () {
setState(() {
likeService.deleteLike(donation, user);
});
},
);
}
}),
),
],
);
小部件,如Widget(字符串posted){
返回列(
儿童:[
大小盒子(
高度:Get.height*0.022,
宽度:Get.width*.15,
孩子:StreamBuilder(
流:FBCollections.postLikes
。其中(“post_id”,isEqualTo:post id)
.where(“user_id”,isEqualTo:userData.userEmail)
.snapshots(),
建设者:
(上下文,异步快照snapshotCheckLike){
如果(!snapshotCheckLike.hasData){
返回容器();
}否则{
返回snapshotCheckLike.data.docs.isEmpty
?图标按钮(
图标:图标(图标。最喜爱的图标),
已按下:(){
最终相似=相似数据(
campaingID:generation.campaignID,
dateTime:Timestamp.now(),
userId:user.uid,
likeId:DateTime.now().toString(),
比如:真的,
);
likeService.newLike(捐赠,like);
},
)
:图标按钮(
iconSize:size.s35,
颜色:颜色。绿色,
图标:图标(Icons.favorite),
已按下:(){
设置状态(){
likeService.deleteLike(捐赠,用户);
});
},
);
}
}),
),
],
);
}