onInit method
Callback invoked after the controller is instantiated and registered.
Override this method to perform setup logic such as starting listeners, initializing reactive state, or pre-fetching data.
Always call super.onInit() if overriding to ensure framework invariants.
Implementation
@override
void onInit() {
super.onInit();
_reactiveTasksEngine = _TaskEngine(maxConcurrent: maxConcurrentTasks);
// Initialize reactive state
// Moved to field declaration to support implicit registration (constructor-phase capture)
// Manually register for auto-disposal to support usage without DI/auto-registration
autoDispose(tasks);
autoDispose(taskWeights);
autoDispose(taskProgress);
totalProgress = (() {
if (tasks.isEmpty) return 0.0;
double sumProgress = 0;
double sumWeight = 0;
for (final id in tasks.keys) {
final status = tasks[id]!;
final weight = taskWeights[id] ?? 1.0;
final p = switch (status) {
LxSuccess() => 1.0,
LxWaiting() => taskProgress[id] ?? 0.0,
_ => 0.0,
};
sumProgress += p * weight;
sumWeight += weight;
}
return sumWeight == 0 ? 0.0 : sumProgress / sumWeight;
}).lx.named('totalProgress');
isBusy = (() => tasks.values.any((s) => s is LxWaiting)).lx.named('isBusy');
// Initialize reactive state
// Manually register for auto-disposal to support usage without DI/auto-registration
autoDispose(tasks);
autoDispose(taskWeights);
autoDispose(taskProgress);
autoDispose(isBusy);
autoDispose(totalProgress);
}