Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如果BlocProvider中有3个Bloc,我们可以在同一个类中使用2个BlocBuilder吗?_Flutter_Dart_Bloc - Fatal编程技术网

Flutter 如果BlocProvider中有3个Bloc,我们可以在同一个类中使用2个BlocBuilder吗?

Flutter 如果BlocProvider中有3个Bloc,我们可以在同一个类中使用2个BlocBuilder吗?,flutter,dart,bloc,Flutter,Dart,Bloc,假设BlocProviderTree中有3个bloc,这意味着这些bloc可用于该类。其中一个用作BlocListener,现在我希望其他两个Bloc用作BlocBuilder,因为我需要在同一页上构建它们的状态。BlocListener接受孩子而不是孩子。请帮忙 BlocProviderTree( blocProviders: [ BlocProvider<EvenBloc>(bloc: _evenBloc),

假设BlocProviderTree中有3个bloc,这意味着这些bloc可用于该类。其中一个用作BlocListener,现在我希望其他两个Bloc用作BlocBuilder,因为我需要在同一页上构建它们的状态。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);
                  },
                )
            )
        ),
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);
                  },
                )
            )
        ),
BlocProviderTree(
blocProviders:[
BlocProvider(bloc:_evenBloc),
BlocProvider(集团:_sumsBloc,),
BlocProvider(bloc:_spacesBloc,),
],
孩子:布洛克斯腾纳(
集团:甚至集团,
侦听器:(BuildContext上下文,EvenState状态){
如果(状态为偶数){
_sumsBloc.调度(LoadSums());
}
},
孩子:BlocBuilder(
集团:_programsBloc,
生成器:(BuildContext上下文,SumsState状态){
如果(状态为SumsEmpty)
返回容器(高度:0.0,宽度:0.0,);
如果(状态为Sumsloding)
回程(
孩子:斯宾基特双弹跳(
颜色:darkIndigo,
尺寸:70.0,
),
);
否则,如果(状态为SumsLoaded)
返回_body(上下文、状态和);
},
)
)
),

如果项目数为偶数,我需要带和的空格名。我得到的和是正确的,但空格在另一个区域。如何定义两个BlocBuilder?

您可以将
BlocBuilder
s嵌套在彼此之间:

BlocBuilder(
bloc:BlocProvider.of(上下文),
生成器:(上下文,FooState FooState){
返回BlocBuilder(
bloc:BlocProvider.of(上下文),
生成器:(上下文,BarState BarState){
返回文本(“$fooState$barState”);
},
);
},
);

完美。因为我在听事件,所以我不得不回忆FooEvent来获取barState的值。但是成功了!谢谢