trackController<T extends ZenController> method
T
trackController<T extends ZenController>(
- T controller
Track a child controller (like ZenQuery, ZenStreamQuery) for automatic disposal
This prevents memory leaks by ensuring child controllers are disposed when this controller is disposed.
Note: You rarely need to call this manually! Child controllers created
in onInit() are automatically tracked.
Example (manual):
class MyController extends ZenController {
late final userQuery = trackController(ZenQuery<User>(
queryKey: 'user',
fetcher: (_) => api.getUser(),
));
}
Implementation
T trackController<T extends ZenController>(T controller) {
if (_disposed) {
throw StateError('Cannot track controller on disposed controller');
}
if (!_childControllers.contains(controller)) {
_childControllers.add(controller);
ZenLogger.logDebug(
'Controller $runtimeType: Auto-tracking child controller ${controller.runtimeType} (total: ${_childControllers.length})');
}
return controller;
}