BloomConfig.fromMap constructor
BloomConfig.fromMap(
- Map map
Constructs a BloomConfig from a configuration map.
Implementation
factory BloomConfig.fromMap(Map<dynamic, dynamic> map) {
final platformsMap = map['platforms'] is Map ? map['platforms'] as Map : {};
final featuresMap = map['features'] is Map ? map['features'] as Map : {};
final deepLinksMap = map['deep_links'] is Map
? map['deep_links'] as Map
: (map['deepLinks'] is Map ? map['deepLinks'] as Map : {});
final deploymentMap = map['deployment'] is Map ? map['deployment'] as Map : {};
final envList = <String>[];
if (map['environment'] is Map && map['environment']['files'] is List) {
for (final item in map['environment']['files']) {
envList.add(item.toString());
}
} else if (map['envFiles'] is List) {
for (final item in map['envFiles']) {
envList.add(item.toString());
}
} else {
envList.addAll(['.env', '.env.local']);
}
final flavorsMap = <String, BloomFlavorConfig>{};
if (map['flavors'] is Map) {
map['flavors'].forEach((k, v) {
if (v is Map) {
flavorsMap[k.toString()] = BloomFlavorConfig.fromMap(k.toString(), v);
}
});
}
final pluginsMap = <String, dynamic>{};
if (map['plugins'] is List) {
for (final item in map['plugins']) {
if (item is String) {
pluginsMap[item] = <String, dynamic>{'enabled': true};
} else if (item is Map) {
item.forEach((k, v) => pluginsMap[k.toString()] = v);
}
}
} else if (map['plugins'] is Map) {
map['plugins'].forEach((k, v) => pluginsMap[k.toString()] = v);
}
const knownKeys = {
'schema',
'name',
'version',
'build_number',
'buildNumber',
'description',
'mode',
'platforms',
'features',
'environment',
'envFiles',
'flavors',
'plugins',
'deep_links',
'deepLinks',
'deployment',
};
final customMap = <String, dynamic>{};
if (map['custom'] is Map) {
(map['custom'] as Map).forEach((k, v) {
customMap[k.toString()] = v;
});
}
map.forEach((k, v) {
if (!knownKeys.contains(k.toString()) && k.toString() != 'custom') {
customMap[k.toString()] = v;
}
});
return BloomConfig(
schema: map['schema'] is int ? map['schema'] as int : 1,
name: map['name']?.toString() ?? 'bloom_app',
version: map['version']?.toString() ?? '0.1.0',
buildNumber: map['build_number']?.toString() ?? map['buildNumber']?.toString() ?? '1',
description: map['description']?.toString() ?? '',
mode: map['mode']?.toString().toLowerCase() ?? 'managed',
platforms: BloomPlatforms.fromMap(platformsMap),
features: BloomFeatures.fromMap(featuresMap),
deepLinks: BloomDeepLinksConfig.fromMap(deepLinksMap),
deployment: BloomDeploymentConfig.fromMap(deploymentMap),
envFiles: envList,
flavors: flavorsMap,
plugins: pluginsMap,
custom: customMap,
);
}