簡體   English   中英

Flutter Riverpod:第一次執行失敗后如何觸發FutureProvider?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM