extensions/riverpod_extension library
Helpers for integrating NetworkManager with Riverpod.
This file does NOT depend on the riverpod package. Instead, it provides
factory functions and patterns that users can drop into their Riverpod
provider definitions.
Usage with Riverpod
// 1. Provide the NetworkManager as a singleton
final networkManagerProvider = Provider<NetworkManager>((ref) {
final manager = NetworkManager();
ref.onDispose(() => manager.dispose());
return manager;
});
// 2. Use the built-in stream notifier
final networkStateProvider = StreamProvider<NetworkState>((ref) {
final manager = ref.watch(networkManagerProvider);
return manager.stateStream;
});
// 3. Create feature-specific providers using NetworkStateNotifier
final userProvider =
StateNotifierProvider<NetworkStateNotifier, NetworkState>((ref) {
return NetworkStateNotifier(ref.watch(networkManagerProvider));
});
// In your widget:
final state = ref.watch(userProvider);
switch (state) {
case Success<User>() => Text(state.data.name),
case Loading() => CircularProgressIndicator(),
// ...
}
// Trigger a request:
ref.read(userProvider.notifier).execute(
() => api.getUser(),
cacheKey: 'user',
strategy: CacheFirst(),
);
Classes
- NetworkStateNotifier
-
A Riverpod-compatible
StateNotifier-style class that manages NetworkState and integrates with NetworkManager.
Extensions
- NetworkManagerRiverpodExtension on NetworkManager
- Extension on NetworkManager for creating Riverpod-friendly providers.