overrideWith method
Override the provider with a new initialization function.
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: [
      // Replace the implementation of the provider with a different one
      myService.overrideWith((ref) {
        ref.watch('other');
        return MyFakeService(),
      })),
    ],
    child: MyApp(),
  ),
);
Implementation
Override overrideWith(CreatedT Function(Ref ref, ArgT arg) create) {
  return $FamilyOverride(
    from: this,
    createElement: (pointer) {
      final provider =
          pointer.origin as $FunctionalProvider<Object?, Object?, CreatedT>;
      return provider
          .$view(create: (ref) => create(ref, provider.argument as ArgT))
          .$createElement(pointer);
    },
  );
}