我在 Flutter 项目中使用 Bloc (Cubit) 进行数据管理。我在导航操作中收到以下错误。
BlocProvider.of() 使用不包含 CityCubit 类型的 Bloc/Cubit 的上下文调用。从传递给 BlocProvider.of() 的上下文中找不到祖先。
当我从登录表单转到我的城市列表页面时,出现上述错误。当我刷新项目时,错误消失了。列出了城市。但是,当我再次登录并重定向我时,我收到一个错误。
main.dart --> MultiBlocProvider[providers: BlocProvider, BlocProvider]
借助按钮“BlocProvider.of (context) .signIn (user);” 在登录。
自动页面
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();
}, listener: (context, state) {
if (state is CityError) {
print("Error");
}
}));
}