Exception caught by widgets library:
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
This happens because you used a BuildContext
that does not include the provider of your choice. There are a few common scenarios:
You added a new provider in your main.dart
and performed a hot-reload. To fix, perform a hot-restart.
The provider you are trying to read is in a different route.
Providers are "scoped". So if you insert of provider inside a route, then other routes will not be able to access that provider.
You used a BuildContext
that is an ancestor of the provider you are trying to read.
Make sure that BlocConsumer<StateStreamable<Object?>, Object?> is under your MultiProvider/Provider<StateStreamable<Object?>>. This usually happens when you are creating a provider and trying to read it immediately.
For example, instead of:
Widget build(BuildContext context) {
return Provider<Example>(
create: (_) => Example(),
// Will throw a ProviderNotFoundError, because `context` is associated
// to the widget that is the parent of `Provider<Example>`
child: Text(context.watch<Example>().toString()),
);
}
consider using builder
like so:
Widget build(BuildContext context) {
return Provider<Example>(
create: (_) => Example(),
// we use `builder` to obtain a new `BuildContext` that has access to the provider
builder: (context, child) {
// No longer throws
return Text(context.watch<Example>().toString());
}
);
}
i what is wrong try too make blocprovider
You are using context.read or BlocProvider.of(context) on the same context which you used to define BlocProvider/MultiBlocProvider.
Only the child contexts have knowledge about the AppCubit, you should wrap the child of BlocProvider/MultiBlocProvider inside a LayoutBuilder widget. Rest will remain same. Your app will work.
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments