Flutter 我试着使用flatter#u bloc检查列表中是否有数字,但列表正在更改,但它';他没在听
现在,如果我在Locale存储中有Home Page和My Favorite Page以及Favorite List变量,因为我不会每次都请求服务器检查产品是否在Favorite中,只需请求一次即可获取我的Favorite的所有id并将其分配给Favorite List 我在每个产品卡片上都有一个图标按钮,上面有收藏夹图标。如果产品Id在收藏夹列表中,则此收藏夹图标颜色必须为红色;如果产品Id不在收藏夹列表中,则此收藏夹图标颜色必须为灰色 现在,如果我通过单击favorite的图标按钮将产品从主页添加到favorite,它必须从主页添加到favorite列表,图标按钮的favorite图标变为红色,然后使用push导航到My Favorites页面,将其从favorite列表中删除,然后弹出并返回主页,图标按钮的favorite图标必须为灰色 但事实并非如此,图标按钮的收藏夹图标仍为红色,因此我希望它收听收藏夹列表,如果产品id从收藏夹列表中删除,图标按钮的收藏夹图标颜色必须更改为灰色 所以我试着用BloC来做这件事,我创建了now项目来测试,我尝试了很多类似下面代码的方法,但都不管用 守则:Flutter 我试着使用flatter#u bloc检查列表中是否有数字,但列表正在更改,但它';他没在听,flutter,bloc,Flutter,Bloc,现在,如果我在Locale存储中有Home Page和My Favorite Page以及Favorite List变量,因为我不会每次都请求服务器检查产品是否在Favorite中,只需请求一次即可获取我的Favorite的所有id并将其分配给Favorite List 我在每个产品卡片上都有一个图标按钮,上面有收藏夹图标。如果产品Id在收藏夹列表中,则此收藏夹图标颜色必须为红色;如果产品Id不在收藏夹列表中,则此收藏夹图标颜色必须为灰色 现在,如果我通过单击favorite的图标按钮将产品从主
class FavosCubit extends Cubit<bool> {
int id;
FavosCubit(this.id) : super(favosId.contains(id));
void toggle() {
if (favosId.contains(id)) {
favosId.remove(id);
} else {
favosId.add(id);
}
print(state) // works it's print true or false;
return emit(favosId.contains(id));
}
}
FavosCubit类扩展了Cubit{
int-id;
FavosCubit(this.id):super(favosId.contains(id));
void toggle(){
if(favosId.contains(id)){
favosId.remove(id);
}否则{
favosId.add(id);
}
print(state)//工作它的print true或false;
返回emit(favosId.contains(id));
}
}
BlocProvider(
创建:(BuildContext上下文)=>FavosCubit(0),
),
列(
儿童:[
…List.generate(
6.
(索引)=>BlocBuilder(
立方英尺:法沃斯库比特(指数),
生成器:(上下文、状态){
返回图标按钮(
图标:图标(
我的最爱,
颜色:州?颜色。红色:颜色。灰色,
),
onPressed:()=>context.bloc().toggle(),
);
},
),
),
],
),
国家正在改变
现在,我必须做些什么才能让大家倾听
BlocProvider<FavosCubit>(
create: (BuildContext context) => FavosCubit(0),
),
Column(
children: [
...List.generate(
6,
(index) => BlocBuilder<FavosCubit, bool>(
cubit: FavosCubit(index),
builder: (context, state) {
return IconButton(
icon: Icon(
Icons.favorite,
color: state ? Colors.red : Colors.grey,
),
onPressed: () => context.bloc<FavosCubit>().toggle(),
);
},
),
),
],
),