问题描述
我在 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 (将#修改为@)