Flutter,BlocProvider 应该在 main 方法中吗?

问题描述 投票:0回答:2

我在一个类中声明了一个 BlocProvider,并在它下面的类中使用了 Bloc Builder,它起作用了。

但是,当使用Navigator并在该子类的子类中声明BlocBuilder并使用上面声明的相同Bloc时,发生了错误。

但是,在主方法(MaterialApp 上方)中声明 BlocProvider 时,您可以使用多个 BlocBuilder,而在任何一层只能使用一个 BlocProvider。

我只想声明一次 BlocProvider,在多个地方使用 BlocBuilder 并共享状态。除了main方法就没有别的办法了吗?

flutter flutter-dependencies bloc
2个回答
1
投票

根据文档,使用 BlocProvider 包裹您的主屏幕。您也可以参考这个问题,这似乎与您自己的问题相关。


0
投票

根据情况,如果希望是全局状态,可以在MaterialApp之上声明BlocProvider。如果您只想在 PageA 导航到 PageB 时 PageB 使用与 PageA 相同的块,您可以通过以下方式实现:

  var pageABloc= BlocProvider.of<PageABloc>(context);
        Navigator.push(context, MaterialPageRoute(builder: (context) {
          return BlocProvider.value(
              value: pageABloc, child: const PageB());
        }));
© www.soinside.com 2019 - 2024. All rights reserved.