flutter 我能从一肘叫另一肘吗?

disho6za  于 2023-03-03  发布在  Flutter
关注(0)|答案(1)|浏览(91)

我正在开发一个使用腕尺的应用程序来管理状态。通常当我需要做一个API请求时,我需要得到我当前的本地化(处理可能的异常)然后发送到后端。所以我想我应该使用cubit来处理请求和获取我当前的本地化。所以现在我的问题是我应该如何处理它?我能以某种方式从另一个cubit调用gpsLocalizationCubit吗?我应该调用gpsLocalizationCubit,并在成功调用requestCubit与使用块侦听器?但然后我应该如何管理加载屏幕,应该是可见的获取本地化和API请求?另一个问题是,我有多个类似的请求(需要使用当前的本地化)在一个视图.
谢谢你的回答:D

v1uwarro

v1uwarro1#

在Blocs和Cubits之间进行通信的最好方法是将它们的流作为参数传递,在cas中可以实现类似的操作:

class LocationCubit extends Cubit<LocationData> {
  ...
}

class SomeCubit extends Cubit<SomeState> {
  final StreamSubscription _locationSubscription;

  SomeCubit({required Stream<LocationData> locationStream}) {
    _locationSubscription = locationStream.listen((locationData) {
      // update your state with the new location or do something
    });
  }

  @override
  Future<void> close() {
    _locationData.cancel();
    super.close();
  }
}

// Where you create your Cubits:
final locationCubit = LocationCubit();
final myCubit = SomeCubit(locationStream: locationCubit.stream);

这样你的Cubit类之间就不会有任何直接的依赖关系。
另一种方法是通过在某种管理器中使用location包https://pub.dev/packages/location来监听位置变化,例如,这个管理器可以是一个用GetIt注入的singleton,这样你就可以在测试中模拟它。

相关问题