execute<T> method
Future<T?>
execute<T>(
- Future<
T> requestFn(), { - String? cacheKey,
- NetworkStrategy? strategy,
- Duration? cacheTtl,
Execute a network request and update state automatically.
ref.read(userProvider.notifier).execute(
() => api.getUser(),
cacheKey: 'user',
strategy: CacheFirst(),
);
Implementation
Future<T?> execute<T>(
Future<T> Function() requestFn, {
String? cacheKey,
NetworkStrategy? strategy,
Duration? cacheTtl,
}) async {
state = const Loading();
try {
final data = await _manager.request<T>(
requestFn,
cacheKey: cacheKey,
strategy: strategy,
cacheTtl: cacheTtl,
);
state = Success<T>(data);
return data;
} catch (e) {
if (!_manager.isOnline) {
state = Offline(queuedRequests: _manager.queue.length);
} else {
state = Error(e.toString(), exception: e);
}
return null;
}
}