是否可能在同一个窗口小部件上有多个bloc生成器,或者不同的bloc必须进行通信?

时间:2020-02-24 20:10:28

标签: flutter bloc

我对Flutter和BLoC / Repository模式相对较新,在尝试将我的iOS应用移植到Flutter时,我试图了解如何在更复杂的情况下使用它。 我的应用使用_flutterMapGeolocatorFirebase_database(不是Firestore)。 功能是基本的地图功能,在当前位置上获取currentlocationcenter地图,track路线并将其保存到Firebase DB,在地图上放置标记并将其保存到Firebase DB 。
我有一个意大利面条式的代码可以处理currentLocation mapSetup并启动currentLocation的流,但是我正在重构它以使用块模式。 到目前为止,我已经拥有marker集团,据我所知,我应该同时拥有tracking集团和location集团。

现在我的问题是如何使flutterMap小部件对所有集团做出反应?我看到这是为了构建一个对团体有反应的小部件,使用了BlocBuilder。对于从Firebase发出的标记,我这样做是这样的:

BlocBuilder<AlertBloc, AlertState>(
                  bloc: AlertBloc(alertRepository: _alertRepository),
                  builder: (BuildContext context, AlertState state) {
                    return Container(
                      height: 670,
                      width: 370,
                      child: _flutterMap,
                    );

_flutterMap还必须对位置组和跟踪组做出反应,以显示跟踪的路线。我见过MultiBlocProvider(),但没有MultiBlocBuilder,所以我想我必须使用另一种方法。

我对使用bloc进行数据流的想法是:

UI(centerButton + trackingButton)-(事件)-> MapBLoc-(mapEventToState)->存储库-(方法)-> 3个不同的dataProvider(tileDataProvider + geolocatorDataProvider + directionsDataProvider)

3个不同的dataProvider-(数据/流)->存储库-(数据/流)-> MapBloc-(状态)-> UI(地图)

这样,我就没有了AlertBloc了。我可以让MapBlocAlertBloc进行交流,我猜想并通过AlertBloc通过MapBlock传递数据array([[20.28466797, 19.24307251, 20.87997437, ..., 20.38343811, 19.70025635, 20.22036743], [ 4.21954346, 17.05456543, 10.09838867, ..., 19.50102234, 19.62188721, 18.30804443], [14.44546509, 19.43798828, 19.45491028, ..., 22.08952332, 17.83691406, 17.86752319])

使用BLoC模式是否比我正在考虑的方法更简单? 非常感谢您的宝贵时间和帮助

0 个答案:

没有答案