state_pulse 0.0.5 copy "state_pulse: ^0.0.5" to clipboard
state_pulse: ^0.0.5 copied to clipboard

Lightweight reactive & persistent state management for Flutter.

[assets/statepulse_logo.png]

StatePulse

A lightweight, reactive, hydrated state-management library for Flutter โ€” inspired by Provider + Hydrated Bloc, but 10ร— simpler.


๐Ÿš€ Features #

  • ๐ŸŒŠ Simple API โ€” only a few core classes
  • ๐Ÿ”ฅ Ultra-fast UI updates (InheritedNotifier + AnimatedBuilder)
  • ๐Ÿ’พ Built-in hydration using HydratedStatePulse
  • ๐ŸŽฏ Selectors, Listeners, and Consumers (like Bloc/Provider)
  • ๐Ÿงฉ Supports local store instances (per-widget state)
  • โšก Zero boilerplate
  • ๐ŸŸฆ Zero dependencies (only shared_preferences for persistence)
  • ๐Ÿง  Designed for small โ†’ large production apps

๐Ÿ“ฆ Install #

dependencies:
  state_pulse: ^0.0.5

๐Ÿงฉ Quick Start Example

  1. Create a Store class CounterStore extends ChangeNotifier with HydratedStatePulse { int value = 0;

void increment() { value++; notifyListeners(); }

@override String get storageKey => 'counter_store';

@override Map<String, dynamic> toJson() => {'value': value};

@override void fromJson(Map<String, dynamic> json) { value = json['value'] ?? 0; } }

  1. Provide the Store StatePulseProvider( store: CounterStore(), child: MyApp(), );

  2. Use With Builder StatePulseBuilder

๐ŸŽฏ Selector Example (High Performance Rebuilds)

Only rebuilds when the selected value changes.

StatePulseSelector<CounterStore, int>( selector: (store) => store.value, builder: (_, value) => Text('$value'), );

๐Ÿ‘‚ Listener Example (Side-effects โ€” No UI Rebuild) StatePulseListener

๐Ÿ”€ Consumer Example (Listener + Builder) StatePulseConsumer

๐Ÿงช Local Store Instance (Widget-Scoped State)

Each widget has its own isolated store:

final localStore = CounterStore();

StatePulseBuilder

๐Ÿ”ง Advanced Example โ€” Hydrated User Store class UserStore extends ChangeNotifier with HydratedStatePulse { UserModel? user; bool loading = false;

Future

@override String get storageKey => "user_store";

@override Map<String, dynamic> toJson() => user == null ? {} : {"user": user!.toJson()};

@override void fromJson(Map<String, dynamic> json) { if (json["user"] != null) { user = UserModel.fromJson(json["user"]); } } }

๐Ÿ“ Folder Structure state_pulse/ โ”œโ”€ assets/ โ”‚ โ””โ”€ statepulse_logo.png โ”œโ”€ lib/ โ”‚ โ”œโ”€ state_pulse.dart โ”‚ โ”œโ”€ src/ โ”‚ โ”‚ โ”œโ”€ hydrated_state_pulse.dart โ”‚ โ”‚ โ”œโ”€ state_pulse_provider.dart โ”‚ โ”‚ โ”œโ”€ state_pulse_builder.dart โ”‚ โ”‚ โ”œโ”€ state_pulse_selector.dart โ”‚ โ”‚ โ”œโ”€ state_pulse_listener.dart โ”‚ โ”‚ โ””โ”€ state_pulse_consumer.dart โ”œโ”€ example/ โ”œโ”€ CHANGELOG.md โ”œโ”€ README.md โ””โ”€ pubspec.yaml

1
likes
0
points
258
downloads

Publisher

unverified uploader

Weekly Downloads

Lightweight reactive & persistent state management for Flutter.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, shared_preferences

More

Packages that depend on state_pulse