要在弹出窗口中访问Bloc,需要使用BuildContext来查找Bloc。为此,可以使用BuildContext的ancestorWidgetOfExactType()方法来查找包含BlocProvider的父级widget。以下是一个示例:
在父级widget中创建BlocProvider:
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => MyBloc(),
child: Scaffold(
appBar: AppBar(
title: Text("My App"),
),
body: ...,
),
);
}
}
在弹出窗口中查找Bloc:
class MyPopup extends StatelessWidget {
@override
Widget build(BuildContext context) {
final MyBloc bloc = BlocProvider.of(context);
return AlertDialog(
...
);
}
}
注意:在使用BlocProvider之前,需要在pubspec.yaml文件中添加bloc库的依赖。