initialize method
Implementation
Future<void> initialize(DigiaConfig config) async {
if (_initialized) {
debugPrint('[Digia] initialize() called more than once — ignored.');
return;
}
_config = config;
_initialized = true;
WidgetsBinding.instance.addObserver(this);
// ── Wire the real src services ────────────────────────────────────────
// DigiaUI.initialize() sets up PreferencesStore, NetworkClient, and
// loads the DSL config (app_config / functions) from the server or
// local assets depending on the chosen Flavor.
final digiaUI = await DigiaUI.initialize(config.toOptions());
// Initialize the Digia UI manager with the provided configuration
DigiaUIManager().initialize(digiaUI);
// Initialize global app state with configuration from DSL
DUIAppState().init(digiaUI.dslConfig.appState ?? []);
// Set up the UI factory with custom resources and providers
DUIFactory().initialize(
// pageConfigProvider: pageConfigProvider,
// icons: icons,
// images: {
// ...(DigiaUIManager().assetImages.asMap().map((k, v) => MapEntry(
// v.assetData.localPath,
// NetworkImage(
// '${v.assetData.image?.baseUrl}${v.assetData.image?.path}')))),
// ...?images
// },
// fontFactory: fontFactory,
);
// Apply environment variables from DigiaUIApp if provided
// if (widget.environmentVariables != null) {
// DUIFactory().setEnvironmentVariables(widget.environmentVariables!);
// }
// Wire the event callback — when DigiaHost reports a user interaction,
// route it to the active plugin.
_controller.onEvent = (event, payload) {
_activePlugin?.notifyEvent(event, payload);
};
// Wire the same callback for inline campaigns reported by DigiaSlot.
inlineController.onEvent = (event, payload) {
_activePlugin?.notifyEvent(event, payload);
};
_logIfVerbose('Digia initialized with apiKey=${config.apiKey}, '
'environment=${config.environment.name}');
}