我可以用另一肘来称呼肘吗?

Nep*_*ath 7 flutter flutter-bloc flutter-state cubit flutter-cubit

我正在开发一个使用肘节来管理状态的应用程序。很多时候,当我需要发出 API 请求时,我需要获取当前的本地化信息(处理可能的异常),然后将其发送到后端。所以我想我应该使用肘来请求并获取当前的本地化。

我的问题是我应该如何处理?我可以gpsLocalizationCubit从另一肘处打电话吗?我应该使用 bloc 侦听器进行调用gpsLocalizationCubit并成功调用吗?requestCubit但是,那么我应该如何管理对于获取本地化和 API 请求都应该可见的加载屏幕呢?另一个问题是我在单个视图中有多个类似的请求(需要使用当前本地化)。

Tij*_*jee 3

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);
Run Code Online (Sandbox Code Playgroud)

这样你的 Cubit 类之间就不会有任何直接的依赖关系。

另一种方法可能是通过在某种管理器中使用位置包https://pub.dev/packages/location来监听位置更改。例如,该管理器可以是您使用 GetIt 注入的单例,因此您可以在测试中模拟它。