我正在使用flutter_bloc(https://pub.dev/packages/flutter_bloc#),但无法理解应将BlocProvider放在窗口小部件树中的哪个位置。
我通常更喜欢以包装Material App Widget的方式来放置它,但是许多人倾向于将其更深入地放置到Widget Tree中。 在那种情况下,我应该将我的存储库从小部件传递到小部件,那么为什么要把BlocProvider放在很深的位置?
在下面的代码中,我举了一个组织代码的示例。这样,我不必将bloc存储库传递到一些深层小部件中。
void main() {
final PostRepository _postRepository = PostRepository();
return runApp(MyApp(postRepository: _postRepository));
}
class MyApp extends StatelessWidget {
final PostRepository postRepository;
MyApp({this.postRepository});
@override
Widget build(BuildContext context) {
return BlocProvider<PostBloc>(
builder: (context) => PostBloc(postRepository: postRepository),
child: MaterialApp(
title: 'Infinite List',
debugShowCheckedModeBanner: false,
home: HomePage(),
theme: ThemeData(
primarySwatch: Colors.red
),
),
);
}}