flutter_pubsub 0.0.1 flutter_pubsub: ^0.0.1 copied to clipboard
A lightweight and efficient state management solution for Flutter, implementing the Publisher-Subscriber pattern with minimal boilerplate and zero dependencies.
pub_sub #
A lightweight and efficient state management solution for Flutter, implementing the Publisher-Subscriber pattern with minimal boilerplate.
Features #
- ðŠķ Lightweight implementation (less than 100 lines of code)
- ð Zero external dependencies
- ðĄ Intuitive API with minimal boilerplate
- ⥠Efficient updates with automatic subscription management
- ðŊ Type-safe state management
- ðą Flutter-first design
Installation #
Add this to your package's pubspec.yaml
file:
dependencies:
pub_sub: ^1.0.0
Usage #
Basic Counter Example #
// Define your state
class Counter extends Pub {
int _count = 0;
int get count => get(_count);
void increment() {
_count++;
notifyListeners();
}
}
// Create an instance
final counter = Counter();
// Use in your UI
class CounterWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Sub(
(_) => Text('Count: ${counter.count}'),
);
}
}
Multiple Subscribers #
Multiple widgets can subscribe to the same state:
Widget build(BuildContext context) {
return Column(
children: [
// First subscriber
Sub(
(_) => Text('Count: ${counter.count}'),
),
// Second subscriber
Sub(
(_) => Text('Is even: ${counter.count.isEven}'),
),
],
);
}
How It Works #
pub_sub
uses a simple yet powerful implementation of the Publisher-Subscriber pattern:
Pub
(Publisher) classes manage state and notify subscribers of changesSub
(Subscriber) widgets automatically subscribe to state changes and rebuild when needed- Subscriptions are automatically managed - no manual cleanup required
Best Practices #
- Create singleton instances for global state
- Use
notifyListeners()
after state changes - Keep state logic in
Pub
classes - Use
Sub
widgets for UI that depends on state
Comparison with Other Solutions #
Feature | pub_sub | Provider | Riverpod | GetX |
---|---|---|---|---|
Setup Complexity | Minimal | Moderate | Moderate | Minimal |
Boilerplate | Very Low | Low | Moderate | Low |
Learning Curve | Shallow | Moderate | Steep | Moderate |
Dependencies | None | Few | Several | Many |
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
License #
This project is licensed under the MIT License - see the LICENSE file for details.