From aea7647c894b443b191c0fb2320ae08522dfd634 Mon Sep 17 00:00:00 2001 From: Dan Cojocaru Date: Thu, 10 Nov 2022 06:28:19 +0100 Subject: [PATCH] Allow customizing refresh on RFBPA --- lib/components/refresh_future_builder.dart | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/components/refresh_future_builder.dart b/lib/components/refresh_future_builder.dart index 53ab89c..c05a054 100644 --- a/lib/components/refresh_future_builder.dart +++ b/lib/components/refresh_future_builder.dart @@ -138,9 +138,10 @@ enum RefreshFutureBuilderState { class RefreshFutureBuilderProviderAdapter extends ConsumerWidget { final Provider> futureProvider; + final Future Function()? refresh; final Widget Function(BuildContext context, Future Function() refresh, Future Function(Future Function()) replaceFuture, RefreshFutureBuilderSnapshot snapshot) builder; - const RefreshFutureBuilderProviderAdapter({required this.futureProvider, required this.builder, super.key}); + const RefreshFutureBuilderProviderAdapter({required this.futureProvider, required this.builder, this.refresh, super.key}); @override Widget build(BuildContext context, WidgetRef ref) { @@ -148,7 +149,7 @@ class RefreshFutureBuilderProviderAdapter extends ConsumerWidget { return builder( context, - () async { + refresh ?? () async { ref.invalidate(futureProvider); }, (_) => throw UnimplementedError('Cannot replace the future when adapting a FutureProvider'), @@ -157,7 +158,7 @@ class RefreshFutureBuilderProviderAdapter extends ConsumerWidget { ? RefreshFutureBuilderSnapshot.refresh(data) : RefreshFutureBuilderSnapshot.withData(data), error: (error, st) => value.isLoading || value.isRefreshing - ? RefreshFutureBuilderSnapshot.refreshError(value.value, value.error, value.stackTrace) + ? RefreshFutureBuilderSnapshot.refreshError(value.hasValue ? value.value : null, value.error, value.stackTrace) : RefreshFutureBuilderSnapshot.withError(error, st), loading: () { if (value.hasValue) {