pulse_statex 0.0.1 copy "pulse_statex: ^0.0.1" to clipboard
pulse_statex: ^0.0.1 copied to clipboard

Powerful, flexible, and modern state management for Flutter. with unique features for advanced use cases.

PulseStateX #

PulseStateX is a powerful, flexible, and modern state management solution for Flutter. Inspired by Cubit and other state management patterns, PulseStateX provides a robust API for managing, reacting to, and providing state throughout your Flutter app. PulseStateX is designed for simplicity, performance, and scalability, and introduces unique features for advanced use cases.


Features #

  • PulseBase: Core class for state management with a simple, extensible API.
  • PulseProvider / MultiPulseProvider: Provide state to your widget tree, supporting both single and multiple providers.
  • PulseBuilder / MultiPulseBuilder: Rebuild widgets in response to state changes, supporting both single and multiple states.
  • PulseSelector: Efficiently rebuild only when a selected part of the state changes.
  • PulseBlocBuilder: Access both current and previous state in your builder.
  • PulseConsumer: Combines builder and listener for state and side effects.
  • PulseListener / MultiPulseListener: Listen to state changes and trigger side effects.
  • PulseEffect: Run a side effect only once when a condition is met.
  • PulseDebounceBuilder: Debounced UI rebuilds for performance-sensitive UIs.
  • PulseWatch: Exposes a ValueNotifier for state, enabling integration with ValueListenableBuilder.
  • ScreenScopedPulseProvider: Provide state only to selected screens/types.
  • Type-safe, null-safe, and easy to extend.

Getting started #

Add PulseStateX to your pubspec.yaml:

dependencies:
  pulse_statex: ^0.0.1

Import PulseStateX in your Dart code:

import 'package:pulse_statex/pulse_statex.dart';

Usage #

1. Create your Pulse #

class CounterPulse extends PulseBase<int> {
  CounterPulse() : super(0);

  void increment() => push(state + 1);
  void decrement() => push(state - 1);
}

2. Provide your Pulse #

PulseProvider(
  pulse: CounterPulse(),
  child: MyApp(),
)

Or for multiple:

MultiPulseProvider(
  providers: [
    PulseProvider(pulse: CounterPulse(), child: ...),
    // Add more providers here
  ],
  child: MyApp(),
)

3. Use Pulse in your widgets #

PulseBuilder<int>(
  builder: (context, state) {
    return Text('Value: $state');
  },
)

4. Listen for changes #

PulseListener<int>(
  listener: (context, state) {
    // Do something when state changes
  },
  child: ...,
)

5. Use advanced features #

  • PulseSelector for partial rebuilds
  • PulseBlocBuilder for previous/current state
  • PulseEffect for one-time side effects
  • ScreenScopedPulseProvider for screen-specific state

Example #

class CounterPulse extends PulseBase<int> {
  CounterPulse() : super(0);

  void increment() => push(state + 1);
  void decrement() => push(state - 1);
}

void main() {
  runApp(
    PulseProvider(
      pulse: CounterPulse(),
      child: MaterialApp(
        home: Scaffold(
          body: PulseBuilder<int>(
            builder: (context, state) => Text('Counter: $state'),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: () =>
                PulseProvider.of<CounterPulse>(context).increment(),
            child: Icon(Icons.add),
          ),
        ),
      ),
    ),
  );
}

Additional information #

  • Documentation: See the API docs for details on each class and method.
  • Contributing: PRs and issues are welcome! Please open an issue or submit a pull request on GitHub.
  • License: MIT

PulseStateX is designed to be the heartbeat of your Flutter app's state management.
Happy coding!

1
likes
150
points
11
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Powerful, flexible, and modern state management for Flutter. with unique features for advanced use cases.

Homepage
Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

flutter, meta

More

Packages that depend on pulse_statex