Я переношу все свое приложение на RiverPods и столкнулся с одной постоянной ошибкой. По сути, в моем main.dart у меня было Provider.value такое, что:
final adState = AdState(initialization: adsInitialization);
runApp(
Provider.value(
value: adState,
child: MyApp(email, password, language),
),
);
'''
И теперь у меня есть
runApp(ProviderScope(
child: MyApp(email, password, language),
));
Как указано в документах Riverpods. Мне было интересно, что нужно изменить, чтобы передать «значение» adstate, как раньше? Я немного смущен тем, что вообще сделал Provider.value...
Вот ошибка, которую я получаю
flutter: Error: Could not find the correct Provider<UserSettings> above this HomePage 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 HomePage is under your MultiProvider/Provider<UserSettings>.
This usually happens when you are creating a provider and trying to read it immediately.
Любая помощь приветствуется, спасибо!
Эквивалентом Riverpod Provider<AdState>.value(value: adState)
будет Provider<AdState>((ref) => adState)
. Однако я бы инициализировал экземпляр внутри провайдера как таковой.
final adState = Provider<AdState>((ref) {
return AdState(initialization: adsInitialization);
});
Я не думаю, что контекста достаточно, чтобы полностью ответить на ваш вопрос. Насколько я могу судить, вы все еще используете Provider для доступа к
UserSettings
, но в вашем дереве нет экземпляраProvider<UserSettings>
.