Nep*_*ath 7 flutter flutter-bloc flutter-state cubit flutter-cubit
我正在开发一个使用肘节来管理状态的应用程序。很多时候,当我需要发出 API 请求时,我需要获取当前的本地化信息(处理可能的异常),然后将其发送到后端。所以我想我应该使用肘来请求并获取当前的本地化。
我的问题是我应该如何处理?我可以gpsLocalizationCubit
从另一肘处打电话吗?我应该使用 bloc 侦听器进行调用gpsLocalizationCubit
并成功调用吗?requestCubit
但是,那么我应该如何管理对于获取本地化和 API 请求都应该可见的加载屏幕呢?另一个问题是我在单个视图中有多个类似的请求(需要使用当前本地化)。
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 注入的单例,因此您可以在测试中模拟它。
归档时间: |
|
查看次数: |
2145 次 |
最近记录: |