Search packages, repositories and app categories

Package detailsv2.1.0

hydrated

An automatically persisted BehaviorSubject with simple hydration for Flutter. Intended to be used with the BLoC pattern.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
385
Likes
29
Pub points
130

Install package

flutter pub add hydrated

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

Hydrated is a Flutter package that provides an automatically persisted BehaviorSubject, enabling state persistence across app restarts. Designed for use with the BLoC pattern, it simplifies state management by automatically saving and restoring state to local storage. The package ensures data resilience without requiring manual serialization or storage logic, making it ideal for maintaining user preferences, session data, or cached information. It supports all major platforms including Android, iOS, Web, macOS, Windows, and Linux.

Use cases

  • Persisting user preferences
  • Caching app state
  • Maintaining session data
  • Restoring UI state after restart
  • Handling offline-first scenarios

Key features

  • Automatic state persistence
  • Built-in serialization
  • Seamless BLoC integration
  • Cross-platform support
  • Minimal boilerplate

Suitable for

  • BLoC-based state management
  • Apps needing offline data retention
  • Developers seeking simple persistence
  • Stateful apps with minimal setup
  • Projects requiring reliable data recovery

Considerations

  • Requires proper serialization of state objects
  • May increase initial load time due to disk I/O
  • Not suitable for large datasets
  • Limited to simple state types
  • Depends on platform-specific storage mechanisms

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Hydrated

Version Build License style: 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 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.

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

demo of Hydrated BehaviorSubject between app restarts

Original developer

hydrated was originally developed by @lukepighetti.

Categories

Dependencies

Dependency list 2 items

Source repository

Projects using this package

No data available yet.