Skip to content

Repository files navigation

Hydrated

VersionBuildLicensestyle: solid

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 createdcount$.add(42);

Ready for BLoC

classHydratedBloc {
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.

  • int
  • double
  • bool
  • String
  • List<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.

classMyAwesomeKeyValueStoreimplementsKeyValueStore {
/// your implementation here...}
final user =HydratedSubject<User>(
"user",
hydrate: (String s) =>User.fromJson(s),
persist: (User user) => user.toJson(),
keyValueStore:MyAwesomeKeyValueStore()
);

Demo

demo of Hydrated BehaviorSubject between app restarts

Original developer

hydrated was originally developed by @lukepighetti.

About

🚰 A BehaviorSubject for Flutter with automatic persist and hydrate.

Resources

Stars

116 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages