Flutter报错BlocProvider.of() called with a context that does not contain a Bloc of type **.

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 createState() => HomePageState();
}

class HomePageState extends State {
  @override
  Widget build(BuildContext context) {
    final loginBloc = BlocProvider.of(context);
    ...
  }
}

此时会收到上述报错异常,更正为:

Navigator.push(context,
	MaterialPageRoute(builder: (context) {
		return BlocProvider(
			builder: (context) => SimpleBloc(),
            child: ARoute(),
        );
}));

即可。

你可能感兴趣的:(flutter)