appInitRemoteConfig function
Future<void>
appInitRemoteConfig(
{ - Map<String, dynamic>? additionalDefaultConfigs,
})
Implementation
Future<void> appInitRemoteConfig({
Map<String, dynamic>? additionalDefaultConfigs,
}) async {
// Build + validate the merged defaults ONCE, before any branch or GetIt
// registration. Validation runs identically on every path (live, mock,
// emulator), so a bad consumer default fails fast and identically
// everywhere — surfacing in local development instead of first crashing a
// live Firebase deploy. Throws an ArgumentError on any non-bool/num/String
// value (see buildValidatedRemoteConfigDefaults).
final mergedDefaults = buildValidatedRemoteConfigDefaults(additionalDefaultConfigs);
// If Firebase is not initialized, always use mock implementation
if (!AppConfigBase.isFirebaseInitialized) {
logd('Firebase not initialized - using mock Remote Config');
await _initFakeRemoteConfig(mergedDefaults);
return;
}
// Use fake Remote Config when using backend emulator (unless overridden)
if (AppConfigBase.doUseBackendEmulator && !AppConfigBase.doOverrideUseLiveRemoteConfig) {
await _initFakeRemoteConfig(mergedDefaults);
} else {
await _initLiveRemoteConfig(mergedDefaults);
}
}