我想在按下时更改收藏夹图标及其颜色
class MyFavorite extends ChangeNotifier{
bool isFavorite ;
isFavorited(){
isFavorite = !isFavorite;
notifyListeners();
}
}
var favorite = Provider.of<MyFavorite>(context , listen: false);
GestureDetector(
onTap: () {
favorite.isFavorited();
},
child: Icon(favorite.isFavorite == true ? Icons.favorite :Icons.favorite_border, color: favorite.isFavorite == true ? Colors.red : Colors.white,
)),
,当我单击时尝试将监听设置为true时 其他项目的颜色已更改
答案 0 :(得分:1)
您需要/应该做一些事情。首先,您需要给布尔值一个初始值。其次,建议将您的属性修改为 getters ,但是这样做时,首先将它们设为私有(由下划线表示)是有意义的。建议这样做,以使其无法从外部进行访问和修改。最后,您需要卸下listen: false
,因为您实际上是在尝试通过重建小部件来更改UI。
bool _isFavorite = false;
bool get isFav => _isFavorite;
isFavorited(){
_isFavorite = !_isFavorite;
notifyListeners();
}
var favorite = Provider.of<MyFavorite>(context);
GestureDetector(
onTap: () {
favorite.isFavorited();
},
child: Icon(favorite.isFav == true ? Icons.favorite :Icons.favorite_border, color: favorite.isFav == true ? Colors.red : Colors.white,
)),
enter code here
如评论中所述,您可以将favorite.isFav
用于条件而无需使用== true
我强烈建议您阅读此https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple
答案 1 :(得分:0)
将类中的PreBar <- PreBar[which(PreBar$Freq!=0),] # remove your zeros
library(ggplot2)
ggplot(data=PreBar, aes(x=Age, y=Freq, fill=PreCond)) +
geom_bar(position=position_dodge2(preserve='single'), stat="identity") +
theme_light() +
ylab("Percentage of Pre-existing Condition Among Positives") +
xlab("Age Category")
变量初始化为isFavourite
或true
。
像这样:-
false
将此行放入class MyFavorite extends ChangeNotifier{
bool isFavorite =false;
isFavorited(){
isFavorite = !isFavorite;
notifyListeners();
}
}
函数中(如果尚不存在)并删除build
listen: false
var favorite = Provider.of<MyFavorite>(context);
意味着您不想听即将发生的变化。