将BlocProvider放在Flutter Widget树中的哪里?

时间:2019-08-02 12:11:45

标签: flutter repository state bloc

我正在使用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
    ),
  ),
);
}}

0 个答案:

没有答案