Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 我试着使用flatter#u bloc检查列表中是否有数字,但列表正在更改,但它';他没在听_Flutter_Bloc - Fatal编程技术网

Flutter 我试着使用flatter#u bloc检查列表中是否有数字,但列表正在更改,但它';他没在听

Flutter 我试着使用flatter#u bloc检查列表中是否有数字,但列表正在更改,但它';他没在听,flutter,bloc,Flutter,Bloc,现在,如果我在Locale存储中有Home Page和My Favorite Page以及Favorite List变量,因为我不会每次都请求服务器检查产品是否在Favorite中,只需请求一次即可获取我的Favorite的所有id并将其分配给Favorite List 我在每个产品卡片上都有一个图标按钮,上面有收藏夹图标。如果产品Id在收藏夹列表中,则此收藏夹图标颜色必须为红色;如果产品Id不在收藏夹列表中,则此收藏夹图标颜色必须为灰色 现在,如果我通过单击favorite的图标按钮将产品从主

现在,如果我在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项目来测试,我尝试了很多类似下面代码的方法,但都不管用

守则:

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(),
                );
              },
            ),
          ),
        ],
      ),