levit_dart_core 0.0.6
levit_dart_core: ^0.0.6 copied to clipboard
The core framework for pure Dart applications. Aggregates dependency injection and reactivity.
levit_dart_core #
Purpose & Scope #
levit_dart_core is the composition layer that integrates:
levit_scopefor dependency injection and lifecycle ownership.levit_reactivefor state propagation and derivation.
This package is responsible for:
Levit: a unified facade over DI, reactive batching, and middleware registration.LevitController: lifecycle-aware application logic units.LevitStore/LevitAsyncStore: reusable scoped state factories.
This package does not include:
- Flutter widgets and widget-tree bindings (use
levit_flutter_coreorlevit_flutter). - Higher-level utility mixins for tasks/loops (use
levit_dart).
Conceptual Overview #
levit_dart_core formalizes ownership semantics between state and lifecycle:
- A
LevitScopeowns registrations and deterministic teardown. - A
LevitControllerowns its auto-disposed resources. - A
LevitStoreis a portable state definition that resolves per scope.
The package preserves explicit scoping and avoids hidden global behavior.
Getting Started #
dependencies:
levit_dart_core: ^latest
import 'package:levit_dart_core/levit_dart_core.dart';
class CounterController extends LevitController {
final count = 0.lx;
void increment() => count(count() + 1);
@override
void onInit() {
super.onInit();
autoDispose(count);
}
}
void main() {
final scope = Levit.createScope('app');
scope.run(() {
Levit.put(() => CounterController());
Levit.find<CounterController>().increment();
});
scope.dispose();
}
Design Principles #
- Explicit ownership: scopes own registrations; controllers own cleanup.
- Deterministic lifecycle: setup and teardown order is predictable.
- Composition over abstraction leakage:
Levitexposes scope and reactive APIs directly. - Pure Dart portability: usable in shared logic, servers, and CLIs.