Flutter报错BlocProvider.of() called with a context that does not contain a Bloc of type **.
在使用flutter_bloc框架创建bloc时,出现报错BlocProvider.of() called with a context that does not contain a Bloc of type **.原因是在创建weight时,未给当前上下文提供bloc.
eg:
1.打开A页面,并在A页面中使用SimpleBloc.
Navigator.push(context, MaterialPageRoute(builder: (context) => ARoute()));
2.在A页面中创建SimpleBloc.
class HomePage extends StatefulWidget {
@override
State<StatefulWidget> createState() => HomePageState();
}
class HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
final loginBloc = BlocProvider.of<LoginBloc>(context);
...
}
}
此时会收到上述报错异常,更正为:
Navigator.push(context,
MaterialPageRoute(builder: (context) {
return BlocProvider(
builder: (context) => SimpleBloc(),
child: ARoute(),
);
}));
即可。