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<dynamic, dynamic>.from(map['fkit'] ?? const {});
  final tooling = Map<dynamic, dynamic>.from(map['tooling'] ?? const {});
  final platforms = Map<dynamic, dynamic>.from(map['platforms'] ?? const {});
  final build = Map<dynamic, dynamic>.from(map['build'] ?? const {});
  final entry = Map<dynamic, dynamic>.from(map['entry'] ?? const {});
  final flavoring = Map<dynamic, dynamic>.from(map['flavoring'] ?? const {});
  final environment =
      Map<dynamic, dynamic>.from(map['environment'] ?? const {});
  final firebase = Map<dynamic, dynamic>.from(map['firebase'] ?? const {});
  final localization =
      Map<dynamic, dynamic>.from(map['localization'] ?? const {});
  final generator = Map<dynamic, dynamic>.from(map['generator'] ?? const {});
  final flavors = (map['flavors'] as List?)
          ?.map((flavor) => flavor.toString())
          .where((flavor) => flavor.isNotEmpty)
          .toList() ??
      const <String>[];
  final defaultFlavor = flavoring['default']?.toString() ??
      (flavors.isNotEmpty ? flavors.first : 'main');

  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: defaultFlavor,
    flavors: flavors.isEmpty ? const ['main'] : flavors,
    environment: EnvironmentConfig.fromMap(environment),
    firebase: FirebaseConfig.fromMap(firebase),
    localization: LocalizationConfig.fromMap(localization),
    debugInfo: build['debug_info']?.toString() ?? './debug-info',
    obfuscate: build['obfuscate'] ?? true,
    mainEntry: entry['main']?.toString() ?? 'lib/main.dart',
    featureDir: generator['feature_dir']?.toString() ?? 'lib/features',
    defaultTemplate:
        generator['default_template']?.toString() ?? 'riverpod_clean',
  );
}