hydrated 2.1.0 
hydrated: ^2.1.0 copied to clipboard
An automatically persisted BehaviorSubject with simple hydration for Flutter. Intended to be used with the BLoC pattern.
Hydrated #
Hydrated provides a Subject that automatically persists to Flutter's local storage and hydrates on creation!
Easy to consume #
All values are persisted with shared_preferences and restored with automatic hydration.
final count$ = HydratedSubject<int>("count", seedValue: 0);
/// count$ will automagically be hydrated with 42 next time it is created
count$.add(42);
Ready for BLoC #
class HydratedBloc {
  final _count$ = HydratedSubject<int>("count", seedValue: 0);
  ValueObservable<int> get count$ => _count$.stream;
  Sink<int> get setCount => _count$.sink;
  dispose() {
    _count$.close();
  }
}
Supports simple types and serialized classes #
We support all shared_preferences types.
intdoubleboolStringList<String>
final count$ = HydratedSubject<int>("count");
We also support serialized classes with hydrate and persist arguments.
final user$ = HydratedSubject<User>(
  "user",
  hydrate: (String s) => User.fromJson(s),
  persist: (User user) => user.toJson(),
);
Reliable #
Hydrated is mock tested with all supported types and is dogfooded by its creator.
Extensible #
Hydrated supports any key-value data storages -- just implement the KeyValueStore interface
and you will be able to use hive, flutter_secure_storage or any other persistence solution of your choice.
class MyAwesomeKeyValueStore implements KeyValueStore {
  /// your implementation here...
}
final user = HydratedSubject<User>(
  "user",
  hydrate: (String s) => User.fromJson(s),
  persist: (User user) => user.toJson(),
  keyValueStore: MyAwesomeKeyValueStore()
);
Demo #
Original developer #
hydrated was originally developed by @lukepighetti.