getValue method
Get a Remote Config value
Implementation
dynamic getValue(String key, dynamic defaultValue) {
if (_remoteConfig == null) {
if (kDebugMode) {
debugPrint(
'[RemoteConfig] getValue("$key"): not initialized, using default');
}
return defaultValue;
}
try {
// When the caller provides a typed default, prefer the Firebase typed
// getters so we respect the parameter's declared type in RC.
if (defaultValue is bool) {
final v = _remoteConfig!.getBool(key);
return v;
}
if (defaultValue is int) {
final v = _remoteConfig!.getInt(key);
return v;
}
if (defaultValue is double || defaultValue is num) {
final v = _remoteConfig!.getDouble(key);
return v;
}
// Fallback: work with the raw string value.
final raw = _remoteConfig!.getString(key);
if (raw.isEmpty) {
if (kDebugMode) {
debugPrint('[RemoteConfig] getValue("$key"): empty, using default');
}
return defaultValue;
}
dynamic converted = raw;
// If no explicit default is provided, infer minimally from the string.
if (defaultValue == null) {
// No explicit default type: infer minimally from the string.
final trimmed = raw.trim();
final lower = trimmed.toLowerCase();
if (lower == 'true') {
converted = true;
} else if (lower == 'false') {
converted = false;
} else {
final asNum = num.tryParse(trimmed);
if (asNum != null) {
converted = asNum;
}
}
}
return converted;
} catch (e, stack) {
if (kDebugMode) {
debugPrint('[RemoteConfig] getValue("$key") failed: $e\n$stack');
}
return defaultValue;
}
}