已经在main.dart
根widget的注册过了,按理说每个context都应该能够获取到
也声明了<XXBloc>
,可是在子widget通过context获取就是为null
可能的原因是在create的builder内new的时候,Bloc初始化有的代码出错了,所以会导致widget tree上显示有,但是获取不到,比较坑的是控制台是不会打印初始化错误的log的,
所以当出现BlocProvider<XXBLOC>.of
报null的问题,BlocProvider确认有包裹时
可以看看XXBloc
类里的实例化执行代码是否有问题,出错了log是不会报的
BlocProvider<XXBloc>(
create:(context)=>XXBloc();//初始化时出现问题,控制台无输出,程序照常运行
)
class XXBloc extends Bloc{
XXBloc(){
throw 'test';//如果此代码块抛出异常,在控制台不会输出,BlocProvider仍然能够在widget tree看到
}
}