Я использую shadcn_flutter в своем проекте flutter, он использует несколько Cubit, и я использую get_it для создания поставщиков, мой файл main.dart выглядит так :
════════ Exception caught by widgets library ═══════════════════════════════════
The following ProviderNotFoundException was thrown building Login(state: _LoginState#12790):
Error: Could not find the correct Provider above this BlocBuilder 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 BlocBuilder is under your MultiProvider/Provider.
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(
create: (_) => Example(),
// Will throw a ProviderNotFoundError, because `context` is associated
// to the widget that is the parent of `Provider`
child: Text(context.watch().toString()),
);
}
consider using `builder` like so:
Widget build(BuildContext context) {
return Provider(
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().toString());
}
);
}
If none of these solutions work, consider asking for help on StackOverflow:
https://stackoverflow.com/questions/tagged/flutter
The relevant error-causing widget was:
Login Login:file:///Users/sami/Documents/flutter_projects/chacha_caller/lib/features/user/presentation/pages/login_signup/signup.dart:152:71
То же самое произойдет, если я добавлю страницу Login() в файл main.dart, а затем Navigator.push() в файл Страница SignUp().
Я использую shadcn_flutter в своем проекте flutter, он использует несколько Cubit, и я использую get_it для создания поставщиков, мой файл main.dart выглядит так : [code]main.dart[/code] [code]import 'features/main_injection_container.dart' as di;
class MainApp extends StatelessWidget { const MainApp({super.key});
@override Widget build(BuildContext context) { return MultiBlocProvider( providers: [ BlocProvider( create: (context) => di.sl(), ), BlocProvider( create: (context) => di.sl(), ), BlocProvider( create: (context) => di.sl(), ), ], child: const SignUp(), ); } } [/code] и затем, когда я пытаюсь выполнить Navigator.of(context).push(MaterialPageRoute(builder: (context) => Login())), я получаю следующее ошибка: [code]════════ Exception caught by widgets library ═══════════════════════════════════ The following ProviderNotFoundException was thrown building Login(state: _LoginState#12790): Error: Could not find the correct Provider above this BlocBuilder 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 BlocBuilder is under your MultiProvider/Provider. 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( create: (_) => Example(), // Will throw a ProviderNotFoundError, because `context` is associated // to the widget that is the parent of `Provider` child: Text(context.watch().toString()), ); }
consider using `builder` like so:
Widget build(BuildContext context) { return Provider( 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().toString()); } ); }
If none of these solutions work, consider asking for help on StackOverflow: https://stackoverflow.com/questions/tagged/flutter
The relevant error-causing widget was: Login Login:file:///Users/sami/Documents/flutter_projects/chacha_caller/lib/features/user/presentation/pages/login_signup/signup.dart:152:71 [/code] То же самое произойдет, если я добавлю страницу Login() в файл main.dart, а затем Navigator.push() в файл Страница SignUp().