Flutter Bloc问题:Android Studio无报错但运行时抛ProviderNotFoundException
BlocProvider 创建报错:ProviderNotFoundException 解决方案
Widgets库捕获异常:
The following ProviderNotFoundException was thrown building _InheritedProviderScope<AppCubit?>(value: <not yet loaded>): Error: Could not find the correct Provider<StateStreamable<Object?>> above this BlocConsumer<StateStreamable<Object?>, Object?> Widget
这个异常的核心原因是当前使用的BuildContext未包含目标Provider,常见场景及对应解决办法:
- 在main.dart中新增Provider后仅执行热重载,需改为热重启(热重载不会重新初始化顶层Provider实例)
- 目标Provider位于其他路由,由于Provider有作用域限制,跨路由无法访问。需确保BlocConsumer与Provider处于同一路由层级,或把Provider提升到两者共同的父路由中
- 使用的BuildContext是目标Provider的祖先上下文,需保证BlocConsumer处于MultiProvider/Provider的子树范围内,或者通过
Builder组件包裹BlocConsumer,使用其builder回调返回的新上下文
内容的提问来源于stack exchange,提问作者Hazem El-masrey
相关产品推荐
相关产品推荐

