overrideWithProvider method

  1. @Deprecated('Will be removed in 3.0.0. Use overrideWith instead.')
Override overrideWithProvider(
  1. ProviderType override
)

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

@Deprecated('Will be removed in 3.0.0. Use overrideWith instead.')
Override overrideWithProvider(ProviderType override) {
  assert(
    override.dependencies == null,
    'When using overrideWithProvider, the override cannot specify `dependencies`.',
  );

  return ProviderOverride(origin: this, override: override);
}