overrideWithProvider method
- AutoDisposeStateProvider<
State> override(- Arg argument
Overrides a provider with a value, ejecting the default behaviour.
This will also disable the auto-scoping mechanism, meaning that if the
overridden provider specified dependencies
, it will have no effect.
The override must not specify a dependencies
.
Some common use-cases are:
- testing, by replacing a service with a fake implementation, or to reach a very specific state easily.
- multiple environments, by changing the implementation of a class based on the platform or other parameters.
This function should be used in combination with ProviderScope.overrides
or ProviderContainer.overrides
:
final myService = Provider((ref) => MyService());
runApp(
ProviderScope(
overrides: [
myService.overrideWithProvider(
// Replace the implementation of the provider with a different one
Provider((ref) {
ref.watch('other');
return MyFakeService(),
}),
),
],
child: MyApp(),
),
);
Implementation
Override overrideWithProvider(
AutoDisposeStateProvider<State> Function(Arg argument) override,
) {
return FamilyOverride<Arg>(
this,
(arg, setup) {
final provider = call(arg);
final newProvider = override(arg);
setup(origin: provider.notifier, override: newProvider.notifier);
},
);
}