【发布时间】:2022-08-14 13:29:27
【问题描述】:
我有一个依赖于FutureProvider 的StateNotifierProvider。目前它们如下所示。
final catalogProvider = StateNotifierProvider<CatalogNotifier, CatalogState>((ref) {
final network = ref.watch(networkProvider.future); // future provider
return CatalogNotifier(network: network);
});
这使我的CatalogNotifier 接受Future<NetworkProvider> 而不是NetworkProvider 并要求我执行以下操作。
await (await network).doGet(...)
避免等待多个并允许CatalogNotifier 接受裸NetworkProvider 以便我可以像await network.doGet(...) 一样写的最佳方法是什么?
根据要求,为了完整性,以下是其他相关提供商
final networkProvider = FutureProvider<Network>((ref) async {
final cache = await ref.watch(cacheProvider.future);
return Network(cacheManager: cache);
});
final cacheProvider = FutureProvider<CacheManager>((ref) async {
final info = await ref.watch(packageInfoProvider.future);
final key = \'cache-${info.buildNumber}\';
return CacheManager(Config(
key,
stalePeriod: const Duration(days: 30),
maxNrOfCacheObjects: 100,
));
我确信我可以将我的缓存提供者作为未来的网络提供者,所以它不必是FutureProvider,但我对如何解决上述问题很感兴趣,因为在另一个场景,如果我依赖说 3 或 4 FutureProviders,这可能不是一个选项。
-
您可以添加
networkProvider代码吗?在这种情况下,您似乎不需要FutureProvider。 -
是的,使用网络提供商及其依赖项更新了问题。但是,我对依赖
StateNotifierProvider中的FutureProvider而不是解决这种特殊情况的最佳方法感兴趣。