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