问题描述
有没有办法在第一次尝试失败时重试 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;
});