InitConfig.fromMap constructor

InitConfig.fromMap(
  1. Map map
)

Creates an FKIT project configuration from the provided map.

Uses default configuration values for settings that are not specified.

Implementation

factory InitConfig.fromMap(Map<dynamic, dynamic> map) {
  final fkit = Map<String, dynamic>.from(map['fkit'] ?? {});
  final tooling = Map<String, dynamic>.from(map['tooling'] ?? {});
  final platforms = Map<String, dynamic>.from(map['platforms'] ?? {});
  final build = Map<String, dynamic>.from(map['build'] ?? {});
  final entry = Map<String, dynamic>.from(map['entry'] ?? {});
  final flavoring = Map<String, dynamic>.from(map['flavoring'] ?? {});
  final localization = Map<String, dynamic>.from(map['localization'] ?? {});
  final firebase = Map<String, dynamic>.from(map['firebase'] ?? {});
  final generator = Map<String, dynamic>.from(map['generator'] ?? {});
  final flavorsMap = Map<String, dynamic>.from(map['flavors'] ?? {});
  final flavors = <String, FlavorDetails>{};

  for (final entry in flavorsMap.entries) {
    if (entry.key == 'default') continue;

    flavors[entry.key] = FlavorDetails.fromMap(Map<String, dynamic>.from(entry.value));
  }

  return InitConfig(
    version: fkit['version']?.toString() ?? '0.1.1',
    projectName: map['project_name']?.toString() ?? '',
    useFvm: tooling['use_fvm'] ?? false,
    android: platforms['android'] ?? true,
    ios: platforms['ios'] ?? true,
    web: platforms['web'] ?? false,
    flavoringEnabled: flavoring['enabled'] ?? false,
    defaultFlavor: flavorsMap['default']?.toString() ?? 'main',
    flavors: flavors,
    localizationEnabled: localization['enabled'] ?? false,
    arbDir: localization['arb_dir']?.toString() ?? 'lib/l10n',
    outputDir: localization['output_dir']?.toString() ?? 'lib/gen/l10n',
    outputFile: localization['output_file']?.toString() ?? 'app_localizations.dart',
    defaultLocale: localization['default_locale']?.toString() ?? 'en',
    locales: (localization['locales'] as List?)?.map((e) => e.toString()).toList() ?? ['en'],
    debugInfo: build['debug_info']?.toString() ?? './debug-info',
    obfuscate: build['obfuscate'] ?? true,
    mainEntry: entry['main']?.toString() ?? 'lib/main.dart',
    testerGroup: firebase['tester_group']?.toString() ?? 'internal-testers',
    featureDir: generator['feature_dir']?.toString() ?? 'lib/features',
    defaultTemplate: generator['default_template']?.toString() ?? 'riverpod_clean',
  );
}