Issue
I get the following error when I run code similar to the below code: BlocProvider.of() called with a context that does not contain a Bloc.
To replicate
BlocProvider(
create: (context) => getIt<TheBloc>()
child: BlocBuilder<TheBloc, TheState>(
build: (context, state) =>
MaterialButton(
onPressed: () => _showModal(context),
child: const Text('SHOW BLOC MODAL'),
),
…
void _showModal(BuildContext context) {
showModalBottomSheet<void>(
context: context,
builder: (_) {
return MaterialButton(
onPressed() {
context.bloc<TheBloc>().add(
TheEvent.someEvent(),
);
}
child: Text('Press button to add event to bloc')
);
},
);
}
Solution
You need to wrap the builder of showModalBottomSheet with a BlocProvider.value as follows:
As the context is new.
return BlocProvider.value(
value: BlocProvider.of<TheBloc>(context),
child: MaterialButton( ...
...
Answered By – Gerry
Answer Checked By – Marie Seifert (FlutterFixes Admin)