createIconsFromConfig function
Implementation
Future<void> createIconsFromConfig(
Config flutterConfigs,
FLILogger logger,
String prefixPath, [
String? flavor,
bool strict = false,
]) async {
if (!flutterConfigs.hasPlatformConfig) {
throw const InvalidConfigException(errorMissingPlatform);
}
// Resolve the effective Android min_sdk_android (explicit → autodetect →
// static default) up-front so a warning surfaces early on autodetect
// failure. Currently the resolved value is logged for visibility; future
// phases may consume it for adaptive-icon gating.
if (flutterConfigs.hasAndroidConfig) {
final resolvedMinSdk = await android_launcher_icons.resolveMinSdkAndroid(
prefixPath: prefixPath,
logger: logger,
explicit: flutterConfigs.minSdkAndroid,
);
logger.verbose(
'Resolved Android min_sdk_android = $resolvedMinSdk for this run.',
);
}
final concurrentIconCreation = <Future<void>>[];
if (flutterConfigs.hasAndroidConfig) {
concurrentIconCreation.add(
android_launcher_icons.createDefaultIcons(
flutterConfigs,
flavor,
logger: logger,
prefixPath: prefixPath,
),
);
}
if (flutterConfigs.hasAndroidAdaptiveConfig) {
concurrentIconCreation.add(
android_launcher_icons.createAdaptiveIcons(
flutterConfigs,
flavor,
logger: logger,
prefixPath: prefixPath,
),
);
}
if (flutterConfigs.hasAndroidAdaptiveMonochromeConfig) {
concurrentIconCreation.add(
android_launcher_icons.createAdaptiveMonochromeIcons(
flutterConfigs,
flavor,
logger: logger,
prefixPath: prefixPath,
),
);
}
await Future.wait(concurrentIconCreation);
if (flutterConfigs.hasAndroidConfig &&
flutterConfigs.copyMipmapXxxhdpiToDrawable) {
await android_launcher_icons.copyXxxhdpiMipmapToDrawable(
flutterConfigs,
flavor,
logger: logger,
prefixPath: prefixPath,
);
}
if (flutterConfigs.hasAndroidConfig) {
await android_launcher_icons.createMipmapXmlFile(
flutterConfigs,
flavor,
logger: logger,
prefixPath: prefixPath,
);
}
if (flutterConfigs.hasIOSConfig) {
await ios_launcher_icons.createIcons(
flutterConfigs,
flavor,
logger: logger,
prefixPath: prefixPath,
);
}
// Generates Icons for given platform
await generateIconsFor(
config: flutterConfigs,
logger: logger,
prefixPath: prefixPath,
flavor: flavor,
strict: strict,
platforms: (context) {
final platforms = <IconGenerator>[];
if (flutterConfigs.hasWebConfig) {
platforms.add(WebIconGenerator(context));
}
if (flutterConfigs.hasWindowsConfig) {
platforms.add(WindowsIconGenerator(context));
}
if (flutterConfigs.hasMacOSConfig) {
platforms.add(MacOSIconGenerator(context));
}
if (flutterConfigs.linuxConfig?.generate == true) {
platforms.add(LinuxIconGenerator(context));
}
return platforms;
},
);
}