我有一个应用程序来展示产品,我有一个模型类,可以将数据转换为Json
class TvShow {
String id;
String name;
String image;
String des;
String date;
List<Content> content;
bool isLiked = false;
TvShow({this.id,
this.name,
this.content,
this.image,
this.des,
this.date,
this.isLiked});
void toggleIsLiked() {
isLiked = !isLiked;
}
所有数据都来自Firebase数据库,除了(isLiked)我想在本地处理
我使用提供程序包
List<TvShow> _favourites = [];
void addFavorite(TvShow tvShow) {
_favourites.add(tvShow);
notifyListeners();
}
void removeFavorite(TvShow tvShow) {
_favourites.remove(tvShow);
notifyListeners();
}
void toggleLikeButton(TvShow tvShow) {
tvShow.toggleIsLiked();
notifyListeners();
}
int get count {
return _favourites.length;
}
List<TvShow> get favoriteList {
return _favourites;
}
这就像按钮代码
Padding(
padding: const EdgeInsets.only(bottom: 20.0),
child: Align(
alignment: Alignment.topRight,
child: IconButton(
onPressed: () {
cardDataProvider.toggleLikeButton(tvShow);
tvShow.isLiked == true
? cardDataProvider.addFavorite(tvShow)
: cardDataProvider.removeFavorite(tvShow);
},
icon: tvShow.isLiked == true
? Icon(
Icons.favorite,
color: Colors.red,
)
: Icon(
Icons.favorite_border,
color: Colors.white,
)),
),
),
然后我在收藏夹屏幕中显示收藏夹列表
问题是,当我单击“赞”按钮时,它会变成红色的心一点点,然后又变成空的心。
是否有解决该问题的方法或更好的方法来实现这一想法,我还想在其他屏幕上显示按钮状态。
谢谢。
答案 0 :(得分:0)
这应该做到: 用setState((){})包装函数 就是这样:
setState((){
cardDataProvider.toggleLikeButton(tvShow);
tvShow.isLiked == true
? cardDataProvider.addFavorite(tvShow)
: cardDataProvider.removeFavorite(tvShow);
});