在Flutter中,是否存在类似根Saga的根BLoC模式



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

用例在根Widget代码中:

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

BlocProvider只接受一个Cubit状态,而我想提供某种形式的根状态

您可以使用MultiBlocProvider

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

好的,我想我可以使用MultiBlocProvider

我还制作了一个小工具,可以聚合这些肘

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(),
)

最新更新