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

Posted

技术标签:

【中文标题】在 Flutter 中,有没有像 root Saga 这样的 root BLoC 模式?【英文标题】:In Flutter, is there a root BLoC pattern like root Saga? 【发布时间】:2021-08-04 17:22:18 【问题描述】:

我正在学习 BLoC 模式,并且我过去使用 redux / saga 工作,所以我已经知道一点,但是我找不到任何方法来聚合多个 BLoC / Cubits 在一个根对象下,就像我在 Saga 中那样.

用例在根 Widget 代码中:

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

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

【问题讨论】:

【参考方案1】:

好的,我想我可以参加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(),
)

【讨论】:

【参考方案2】:

您可以使用 MultiBlocProvider

CounterCubitBloc1 counterCubitBloc1;
CounterCubitBloc2 counterCubitBloc2;

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

【讨论】:

以上是关于在 Flutter 中,有没有像 root Saga 这样的 root BLoC 模式?的主要内容,如果未能解决你的问题,请参考以下文章

当文本在 Flutter 中溢出时如何使 Text 小部件像选取框一样

在flutter webview中播放视频时,有没有办法打开像MX播放器这样的外部视频播放器? [关闭]

Dart / Flutter - 有没有像 javascript 一样为 HTML 块获取 innerText? [复制]

[NN] Stochastic Gradient Descent - SAG & SVRG

行中图像的动态列表,带有换行符(之间没有空格),允许长按图像打开编辑选项 - Flutter

图论算法Dijkstra算法