https://github.com/solid-software/hydrated
🚰 A BehaviorSubject for Flutter with automatic persist and hydrate.
https://github.com/solid-software/hydrated
Last synced: 9 months ago
JSON representation
🚰 A BehaviorSubject for Flutter with automatic persist and hydrate.
- Host: GitHub
- URL: https://github.com/solid-software/hydrated
- Owner: solid-software
- License: mit
- Created: 2018-12-20T22:28:07.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-01-17T19:21:11.000Z (over 4 years ago)
- Last Synced: 2023-11-07T20:05:43.144Z (over 2 years ago)
- Language: Dart
- Homepage: https://pub.dev/packages/hydrated
- Size: 1.13 MB
- Stars: 115
- Watchers: 3
- Forks: 18
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Hydrated
[](https://pub.dev/packages/hydrated)
[](https://github.com/lukepighetti/hydrated/actions?query=Flutter)
[](https://opensource.org/licenses/MIT)
[](https://pub.dev/packages/solid_lints)
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.
```dart
final count$ = HydratedSubject("count", seedValue: 0);
/// count$ will automagically be hydrated with 42 next time it is created
count$.add(42);
```
## Ready for BLoC
```dart
class HydratedBloc {
final _count$ = HydratedSubject("count", seedValue: 0);
ValueObservable get count$ => _count$.stream;
Sink get setCount => _count$.sink;
dispose() {
_count$.close();
}
}
```
## Supports simple types and serialized classes
We support all `shared_preferences` types.
- `int`
- `double`
- `bool`
- `String`
- `List`
```dart
final count$ = HydratedSubject("count");
```
We also support serialized classes with `hydrate` and `persist` arguments.
```dart
final user$ = HydratedSubject(
"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.
```dart
class MyAwesomeKeyValueStore implements KeyValueStore {
/// your implementation here...
}
final user = HydratedSubject(
"user",
hydrate: (String s) => User.fromJson(s),
persist: (User user) => user.toJson(),
keyValueStore: MyAwesomeKeyValueStore()
);
```
## Demo

## Original developer
`hydrated` was originally developed by [@lukepighetti](https://github.com/lukepighetti).