在 Flutter 中,有没有像 root Saga 这样的 root BLoC 模式?

In Flutter, is there a root BLoC pattern like root Saga?

我正在学习 BLoC 模式,并且我过去曾使用 redux / saga,所以我已经知道了一点,但是我找不到任何方法将多个 BLoC / Cubits 聚合到一个根对象下在传奇中。

用例在根控件代码中:

home: BlocProvider(
    create: (BuildContext context) => CounterCubit(),
    child: MyHomePage(),
)

BlocProvider 仅采用一个 Cubit 状态,而我想提供某种形式的根状态

好的,我想我可以 MultiBlocProvider class

我还制作了一个 Widget,可以聚合这些 cubits

class RootBlocProvider extends StatelessWidget {
    final Widget child;

    const RootBlocProvider({
        Key key,
        this.child
    }) : super(key: key);

    @override
    Widget build(BuildContext context) {
        return MultiBlocProvider(
            providers: [
                BlocProvider(
                    create: (BuildContext context) => CounterCubit(),
                ),
                BlocProvider(
                    create: (BuildContext context) => HotlineCubit(),
                ),
            ],
            child: this.child
        );
    }
}

所以现在我可以像那样使用它了:

home: RootBlocProvider(
    child: MyHomePage(),
)

您可以使用 MultiBlocProvider

CounterCubitBloc1 counterCubitBloc1;
CounterCubitBloc2 counterCubitBloc2;

@override
Widget build(BuildContext context) {
return MultiBlocProvider(
  providers: [
    BlocProvider.value(value: counterCubitBloc1),
    BlocProvider.value(value: counterCubitBloc2),
  ],
  child: MyHomePage(),
)