【问题标题】:If we have 3 BLoCs in the BlocProvider, Can we use 2 BLoCBuilders in the same class?如果我们在 BlocProvider 中有 3 个 BLoC,我们可以在同一个类中使用 2 个 BLoCBuilder 吗?
【发布时间】:2019-11-08 13:01:57
【问题描述】:

假设我在 BlocProviderTree 中有 3 个 BLoC,这意味着这些 bloc 可用于该类。其中一个用作 BlocListener,现在我希望将另外两个 BLoC 用作 BlocBuilders,因为我需要在同一页面上构建它们的状态。 BlocListener 接受孩子而不是孩子。请帮忙!

BlocListener 接受孩子而不是孩子。请帮忙!

BlocProviderTree(
            blocProviders: [

              BlocProvider<EvenBloc>(bloc: _evenBloc),
              BlocProvider<SumBloc>(bloc: _sumsBloc,),
              BlocProvider<SpacesBloc>(bloc: _spacesBloc,),

            ],
            child: BlocListener(
                bloc: _evenBloc,
                listener: (BuildContext context, EvenState state) {
                  if (state is NowEven) {
                    _sumsBloc.dispatch(LoadSums());
                  }
                },

                child: BlocBuilder<SumsEvent,SumsState>(
                  bloc: _programsBloc,
                  builder: (BuildContext context, SumsState state) {
                    if (state is SumsEmpty)
                      return Container(height: 0.0, width: 0.0,);
                    if (state is SumsLoading)
                      return Evens(
                        child: SpinKitDoubleBounce(
                          color: darkIndigo,
                          size: 70.0,
                        ),
                      );
                    else if (state is SumsLoaded)
                      return _body( context,state.sums);
                  },
                )
            )
        ),

如果项目数是偶数,我希望 SpaceNames 带有总和。我得到了正确的总和,但空间在其他集团。如何定义两个 BlocBuilder?

【问题讨论】:

    标签: flutter dart bloc


    【解决方案1】:

    您可以将BlocBuilders 相互嵌套:

    BlocBuilder(
      bloc: BlocProvider.of<Foo>(context),
      builder: (context, FooState fooState) {
        return BlocBuilder(
          bloc: BlocProvider.of<Bar>(context),
          builder: (context, BarState barState) {
            return Text('$fooState $barState');
          },
        );
      },
    );
    

    【讨论】:

    • 完美。由于我正在监听事件,我不得不回忆 FooEvent 以使用 barState 获取值。但它奏效了!谢谢!
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 2014-02-17
    • 2021-10-02
    • 2021-06-25
    • 2020-04-11
    • 2015-02-05
    相关资源
    最近更新 更多