loadModule method
- String moduleId
Lazily load a module. Checks feature flags before loading.
Implementation
Future<bool> loadModule(String moduleId) async {
// Check feature flags
if (featureFlags != null && !featureFlags!.isModuleEnabled(moduleId)) {
return false;
}
final state = _modules[moduleId];
if (state == null) return false;
if (state.loaded) return true;
// Check dependencies
final moduleInfo = _manifest?.getModule(moduleId);
if (moduleInfo != null) {
for (final dep in moduleInfo.dependencies) {
if (!isModuleLoaded(dep)) {
final depLoaded = await loadModule(dep);
if (!depLoaded) return false;
}
}
}
// Initialize module
if (state.initializer != null) {
await state.initializer!();
}
state.loaded = true;
state.version = moduleInfo?.version;
return true;
}