A BehaviorSubject for Flutter with automatic persist and hydrate

admin

A BehaviorSubject for Flutter with automatic persist and hydrate

Hydrated

Hydrated provides a BehaviorSubject 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.

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.

demo of Hydrated tests completing successfully

Demo

demo of Hydrated BehaviorSubject between app restarts

Credit (github url) : https://github.com/lukepighetti/hydrated

Next Article : https://flutterappdev.com/2019/02/22/flutter-currency-converter-mobile-app-development/

Leave a Comment