levit_reactive 0.0.7
levit_reactive: ^0.0.7 copied to clipboard
Pure Dart reactive state management primitives. The engine of the Levit framework.
levit_reactive #
Purpose & Scope #
levit_reactive is Levit's pure Dart reactive runtime.
This package is responsible for:
- Mutable and immutable reactive values.
- Derived state (
LxComputed, async computed variants). - Side-effect workers (
LxWorkerfamily). - Deterministic propagation and batch semantics.
- Reactive middleware interception.
This package does not include:
- Dependency injection and lifecycle container semantics (
levit_scope). - Flutter widget bindings (
levit_flutter_core,levit_flutter).
Conceptual Overview #
Reactive objects expose values and notify observers. Observers subscribe implicitly (through dependency tracking) or explicitly (listeners/workers).
Core abstractions:
.lxextensions create reactive sources.LxComputeddefines derived values from dependencies.LxWorkerruns side-effects when dependencies change.Lx.batch/Lx.batchAsynccoalesce propagation.
Getting Started #
dependencies:
levit_reactive: ^latest
import 'package:levit_reactive/levit_reactive.dart';
void main() {
final count = 0.lx;
final doubled = LxComputed(() => count() * 2);
final worker = LxWorker(doubled, (value) {
print('doubled=$value');
});
count(1);
count(2);
worker.close();
doubled.close();
count.close();
}
Middleware Lifecycle (Token-Based) #
import 'package:levit_reactive/levit_reactive.dart';
const historyToken = #state_history;
void configure() {
Lx.addMiddleware(LevitReactiveHistoryMiddleware(), token: historyToken);
}
void teardown() {
Lx.removeMiddlewareByToken(historyToken);
}
Design Principles #
- Ordered, deterministic propagation.
- Fine-grained dependency tracking.
- Explicit lifecycle closure for long-lived resources.
- Predictable middleware interception.