Flutter Bloc Cubit Navigator 问题 BlocProvider.of() 使用不包含 CityCubit

问题描述

我在 Flutter 项目中使用 Bloc (Cubit) 进行数据管理。我在导航操作中遇到以下错误

BlocProvider.of() 使用不包含 CityCubit 类型的 Bloc/Cubit。 从传递给 BlocProvider.of() 的上下文开始,找不到任何祖先。

当我从登录表单转到我的城市列表页面时,出现上述错误刷新项目时错误消失。列出了城市。但是,当我再次登录重定向时,出现错误

main.dart --> MultiBlocProvider[providers: BlocProvider,BlocProvider]

借助按钮“BlocProvider.of(上下文).signIn(用户);”登录

自动页面

BlocConsumer<AuthCubit,AuthState>(builder: (context,state) {
              return _buildUI();
            },listener: (context,state) {
              if (state is AuthLoading) {
                return Center(
                  child: CircularProgressIndicator(),);
              }
              if (state is AuthLoaded) {
                Navigator.of(context).push(
                    MaterialPageRoute(builder: (context) => CityListPage()));
              }
              if (state is AuthError) {
                Scaffold.of(context)
                    .showSnackBar(SnackBar(content: Text(state.message)));
                print(state.message);
              }
            })

城市列表页

List<CityModel> cities = [];        
@override
          void initState() {
            BlocProvider.of<CityCubit>(context).getAll();
            super.initState();
          }
    Widget build(BuildContext context) {
        return Scaffold(
            appBar: AppBar(
              title: Text("Hello"),),body: BlocConsumer<CityCubit,CityState>(builder: (context,state) {
              if (state is CityInitial) {
                return Text("....");
              }
              if (state is CityLoading) {
                return Center(
                  child: CircularProgressIndicator(),);
              }
              if (state is CitiesLoaded) {
                cities.addAll(state.cities);
              }
              return _buildCities();
            },state) {
              if (state is CityError) {
                print("Error");
              }
            }));
      }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)