Flutter 如果BlocProvider中有3个Bloc,我们可以在同一个类中使用2个BlocBuilder吗?
假设BlocProviderTree中有3个bloc,这意味着这些bloc可用于该类。其中一个用作BlocListener,现在我希望其他两个Bloc用作BlocBuilder,因为我需要在同一页上构建它们的状态。BlocListener接受孩子而不是孩子。请帮忙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(
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的值。但是成功了!谢谢