Flutter 颤振,在一个团中使用一个团
我有两个集团。Flutter 颤振,在一个团中使用一个团,flutter,dart,bloc,state-management,flutter-bloc,Flutter,Dart,Bloc,State Management,Flutter Bloc,我有两个集团。 EstateBloc 地产集团 我的应用程序基本上从API中获取属性,并以类似的方式显示它们 现在我想添加一个排序功能,但我只能通过特定的状态访问遗产列表 if(当前状态为后加载状态){{ 打印(currentState.estates); } 我想为需要这份名单的任何一个集团提供这份名单 我所做的是,我创建了EstateTryBloc,它基本上包含作为一个州的地产列表 class EstateTryBloc扩展了Bloc{ @凌驾 列表获取初始状态=>[]; @凌驾 流映
- EstateBloc
- 地产集团
if(当前状态为后加载状态){{
打印(currentState.estates);
}
我想为需要这份名单的任何一个集团提供这份名单
我所做的是,我创建了EstateTryBloc,它基本上包含作为一个州的地产列表
class EstateTryBloc扩展了Bloc{
@凌驾
列表获取初始状态=>[];
@凌驾
流映射事件状态(
EstateTryEvent事件,
)异步*{
最终电流状态=状态;
如果(事件为AddToEstateList){
final estates=等待从源获取(currentState.length,20)
.getDataFromEitherSource();
国家+不动产;
}
}
}
当我在集团内部打印州时,我得到了房地产清单,但我不知道如何在不同的集团中使用该清单
print(estaterybloc().state);
只显示初始状态
我对各种答案都持开放态度,请随时告诉我是否采用不同的方法会更好。目前,在集团之间共享数据的推荐方法是将一个集团注入另一个集团,并监听状态变化。因此,在您的情况下,应该是这样的:
class EstateTryBloc extends Bloc<EstateTryEvent, List<Estate>> {
final StreamSubscription _subscription;
EstateTryBloc(EstateBloc estateBloc) {
_subscription = estateBloc.listen((PostState state) {
if (state is PostLoadedState) {
print(state.estates);
}
});
}
@override
Future<Function> close() {
_subscription.cancel();
return super.close();
}
}
class EstateTryBloc扩展了Bloc{
最终认购(股认购);;
EstateTryBloc(EstateBloc EstateBloc){
_订阅=estateBloc.listen((状态后){
如果(状态为PostLoadedState){
印刷品(州、地产);
}
});
}
@凌驾
远期交割(){
_订阅。取消();
返回super.close();
}
}
当您执行打印(estaterybloc().state);
您正在创建一个estaterybloc()
的新实例,这就是为什么您总是看到初始状态而不是当前状态
要使其工作,您必须访问要获取其状态的实例的引用。例如:
final EstateTryBloc bloc = EstateTryBloc();
// Use the bloc wherever you want
print(bloc.state);
老实说,我把事情复杂化了一点,没有意识到真正的问题。
就是在我按下排序按钮时,意外地创建了一个新的EstateBloc()实例。
无论如何,谢谢你们的贡献,伙计们