在颤动中切换“赞”按钮

时间:2020-08-25 22:25:26

标签: firebase flutter dart

我有一个应用程序来展示产品,我有一个模型类,可以将数据转换为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,
                  )),
      ),
    ),

然后我在收藏夹屏幕中显示收藏夹列表

问题是,当我单击“赞”按钮时,它会变成红色的心一点点,然后又变成空的心。

enter image description here

是否有解决该问题的方法或更好的方法来实现这一想法,我还想在其他屏幕上显示按钮状态。

谢谢。

1 个答案:

答案 0 :(得分:0)

这应该做到: 用setState((){})包装函数 就是这样:

setState((){


cardDataProvider.toggleLikeButton(tvShow);
          tvShow.isLiked == true
              ? cardDataProvider.addFavorite(tvShow)
              : cardDataProvider.removeFavorite(tvShow);
});