我需要一个建议或魔术踢的情况下如何一个区块可以与其他相关的区块工作。
我有这样的结构building
-〉floors
-〉floorplan
。所以我有三个块
class BuildingBloc extends Bloc {
// .. exposes state with lastSelectedBuildingId
}
class FloorBloc extends HydratebBloc {
// ... exposes state with lastSelectedFloorId
// ... refreshes (loads) floors for a specific building
// ... manages current selection
// Two ways to manage selected building
// 1. Use class member `buildingId` and use it for getting floors
// 2. Pass `buildingId` to `getFloors` method w/o passing it to constructor.
FloorBloc(this.buildingId) : super(...)
Future<BuildingFloor> getFloors([int? buildingId]) {
...
}
}
class FloorPlanBloc extends HydratedBloc {
// ... exposes state with scale and scrollOffset
// ... allows to zoom image and scroll it.
}
当BuildingBloc
的lastSelectedBuildingId
被改变时,GUI显示带有建筑物楼层的树。当FloorBloc
的lastSelectedFloorId
被改变时,GUI显示带有楼层平面图的图像。该图像可以缩放和滚动。
当我离开建筑物页面时,我需要保存当前楼层选择和所选图像平面的比例/滚动偏移,并在返回时恢复(这就是为什么我使用HyndratedBloc
)。但是当建筑物改变时(选择了新的)我需要重置FloorPlanBloc
之前的所有状态。因此,我需要在FloorBloc
和FloorPlanBloc
之间实现“协商”。FloorBloc
应该创建并返回FloorPlanBloc
吗?或者FloorBloc
应该保留FloorPlanBloc
的状态,然后在创建时将其传递给FloorPlanBloc
吗?我有点困惑,也许有人能给我任何帮助?
1条答案
按热度按时间unhi4e5o1#
你可以
dependency inject``Bloc
一个到另一个并监听它的事件。因此,您将向它们注入
BlocProvider
或MultiBlocProvider
,如下所示: