Browse Source

Allow customizing refresh on RFBPA

master
Kenneth Bruen 2 years ago
parent
commit
aea7647c89
Signed by: kbruen
GPG Key ID: C1980A470C3EE5B1
  1. 7
      lib/components/refresh_future_builder.dart

7
lib/components/refresh_future_builder.dart

@ -138,9 +138,10 @@ enum RefreshFutureBuilderState {
class RefreshFutureBuilderProviderAdapter<T> extends ConsumerWidget {
final Provider<AsyncValue<T>> futureProvider;
final Future Function()? refresh;
final Widget Function(BuildContext context, Future Function() refresh, Future Function(Future<T> Function()) replaceFuture, RefreshFutureBuilderSnapshot<T> 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<T> 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<T> 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) {

Loading…
Cancel
Save