[英]Flutter Riverpod: How to trigger FutureProvider after first execution fail?
當第一次嘗試失敗時,有什么方法可以重試 FutureProvider?
提供者:
final _dataProvider = FutureProvider((ref) => ref.watch(productRepositoryProvider).fetchProducts());
消費者:
return watch(_dataProvider).when(
data: (value) {
return Text('Ok');
},
loading: () => const CircularProgressIndicator(),
error: (error, stackTrace) {
return FlatButton(
child: Text('Retry'),
onPressed: () {
// What should I add here to retry this FutureProvider?
},
);
},
);
你可以試試
onPressed: () {
context.refresh(_dataProvider);
},
我認為你想要做的最合適的方法是這樣的:
StreamProvider 和 Autodispose
final productRepositoryProvider =
Provider<IProductRepository>((ref) => ProductRepository());
final allProductProvider =
StreamProvider.autoDispose<List<ProductModel>>((ref) {
final _productRepository = ref.watch(productRepositoryProvider);
return _productRepository.allProductsStream;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.