BlocProvider<B extends BlocBase<S>, S>.scoped constructor

BlocProvider<B extends BlocBase<S>, S>.scoped(
  1. String name
)

Creates a BlocProvider that needs to be overridden

With pure dart:

final blocProvider = BlocProvider<CounterBloc, int>.scoped('blocProvider');

final container = ProviderContainer(
  overrides: [
    blocProvider
        .overrideWithProvider(BlocProvider((ref) => CounterBloc(0))),
  ],
);

final counter = container.read(blocProvider); // counter = 0

With Flutter:

final blocProvider = BlocProvider<CounterBloc, int>.scoped('blocProvider');

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return ProviderScope(
      overrides: [
        blocProvider
            .overrideWithProvider(BlocProvider((ref) => CounterBloc(0))),
      ],
      child: Consumer(
        builder: (context, ref, child) {
          final counter = ref.watch(blocProvider);  // counter = 0
          return Text('$counter');
        }
      )
    );
  }
}

Implementation

BlocProvider.scoped(String name)
    : this(
        (ref) => throw UnimplementedProviderError<BlocProvider<B, S>>(name),
        name: name,
      );