当我运行类似于以下代码的代码时,出现以下错误:BlocProvider.of()在不包含Bloc的上下文中调用。
要复制
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')
);
},
);
}
答案 0 :(得分:1)
您需要使用BlocProvider.value包裹showModalBottomSheet的构建器,如下所示: 由于上下文是新的。
return BlocProvider.value(
value: BlocProvider.of<TheBloc>(context),
child: MaterialButton( ...
...