applyActionConfig method
Apply a raw action_config envelope.
Implementation
void applyActionConfig(Object? raw, {required String sdkVersion}) {
var flagEnabled = true;
var versionAllowed = true;
var localCache = true;
var cacheSync = true;
var dataCapture = true;
var transmitOnHiddenWidget = true;
var awakeningEffect = true;
var activeBorderGlow = true;
var highlighting = true;
var clickTracking = true;
var nativeBridge = true;
List<Color>? activeBorderGradient;
List<Color>? highlightGradient;
List<Color>? awakeningGradient;
var effects = ActionEffects.none;
try {
if (raw is Map) {
final flags = raw['flags'];
if (flags is Map) {
if (_isExplicitlyFalse(flags['actionIntelligence'])) {
flagEnabled = false;
}
if (_isExplicitlyFalse(flags['localCache'])) localCache = false;
if (_isExplicitlyFalse(flags['cacheSync'])) cacheSync = false;
if (_isExplicitlyFalse(flags['dataCapture'])) dataCapture = false;
if (_isExplicitlyFalse(flags['transmitOnHiddenWidget'])) {
transmitOnHiddenWidget = false;
}
if (_isExplicitlyFalse(flags['awakeningEffect'])) {
awakeningEffect = false;
}
if (_isExplicitlyFalse(flags['activeBorderGlow'])) {
activeBorderGlow = false;
}
if (_isExplicitlyFalse(flags['highlighting'])) highlighting = false;
if (_isExplicitlyFalse(flags['clickTracking'])) clickTracking = false;
if (_isExplicitlyFalse(flags['nativeBridge'])) nativeBridge = false;
final minVersion = flags['minSdkVersion'];
if (minVersion is String &&
minVersion.trim().isNotEmpty &&
_compareVersions(sdkVersion, minVersion.trim()) < 0) {
versionAllowed = false;
}
}
// Android's native-only home for the same switch.
final treePush = raw['treePush'];
if (treePush is Map &&
_isExplicitlyFalse(treePush['transmitOnHiddenWidget'])) {
transmitOnHiddenWidget = false;
}
final colors = raw['colors'];
if (colors is Map) {
activeBorderGradient =
_parseGradient(colors['activeBorderGradient'], minStops: 1);
highlightGradient =
_parseGradient(colors['highlightGradient'], minStops: 1);
awakeningGradient =
_parseGradient(colors['awakeningGradient'], minStops: 2);
}
effects = _parseEffects(raw['effects']);
}
} catch (_) {
flagEnabled = true;
versionAllowed = true;
localCache = true;
cacheSync = true;
dataCapture = true;
transmitOnHiddenWidget = true;
awakeningEffect = true;
activeBorderGlow = true;
highlighting = true;
clickTracking = true;
nativeBridge = true;
activeBorderGradient = null;
highlightGradient = null;
awakeningGradient = null;
effects = ActionEffects.none;
}
final before = actionIntelligenceEnabled;
final beforeAll = _fingerprint;
_flagEnabled = flagEnabled;
_versionAllowed = versionAllowed;
_localCache = localCache;
_cacheSync = cacheSync;
_dataCapture = dataCapture;
_transmitOnHiddenWidget = transmitOnHiddenWidget;
_awakeningEffect = awakeningEffect;
_activeBorderGlow = activeBorderGlow;
_highlighting = highlighting;
_clickTracking = clickTracking;
_nativeBridge = nativeBridge;
_activeBorderGradient = activeBorderGradient;
_highlightGradient = highlightGradient;
_awakeningGradient = awakeningGradient;
_effects = effects;
_notifyIfChanged(before,
anyChanged: !_sameFingerprint(beforeAll, _fingerprint));
}