【发布时间】:2020-08-25 22:25:26
【问题描述】:
我有一个展示产品的应用程序,我有一个模型类来将数据转换为 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,
)),
),
),
那么我在喜欢的画面中显示喜欢的列表
问题是当我点击喜欢按钮时,它会变成红色的心,然后又变成空心。
是否有解决方案或更好的方法来实现这个想法,我也想在另一个屏幕上显示类似的按钮状态。
谢谢。
【问题讨论】:
-
当您更改某些内容时,您必须使用 setState{} 方法,更改必须设置在 setState{}