已经在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看到
}
}
本文探讨了在Flutter中使用BlocProvider时遇到的常见问题:即使已经正确注册,子Widget通过context获取BlocProvider仍返回null。文章深入分析了可能的原因,特别是在Bloc实例化过程中未捕获的异常,并提供了排查和修复的步骤。
1106

被折叠的 条评论
为什么被折叠?



