createImageList function
Create the image list for the Contents.json file for Xcode versions Xcode 14 and above
Implementation
List<Map<String, dynamic>> createImageList(
String fileNamePrefix,
String? darkFileNamePrefix,
String? tintedFileNamePrefix,
) {
const List<Map<String, dynamic>> imageConfigurations = [
{
'size': '20x20',
'idiom': 'universal',
'platform': 'ios',
'scales': ['2x', '3x'],
},
{
'size': '29x29',
'idiom': 'universal',
'platform': 'ios',
'scales': ['2x', '3x'],
},
{
'size': '38x38',
'idiom': 'universal',
'platform': 'ios',
'scales': ['2x', '3x'],
},
{
'size': '40x40',
'idiom': 'universal',
'platform': 'ios',
'scales': ['2x', '3x'],
},
{
'size': '60x60',
'idiom': 'universal',
'platform': 'ios',
'scales': ['2x', '3x'],
},
{
'size': '64x64',
'idiom': 'universal',
'platform': 'ios',
'scales': ['2x', '3x'],
},
{
'size': '68x68',
'idiom': 'universal',
'platform': 'ios',
'scales': ['2x'],
},
{
'size': '76x76',
'idiom': 'universal',
'platform': 'ios',
'scales': ['2x'],
},
{
'size': '83.5x83.5',
'idiom': 'universal',
'platform': 'ios',
'scales': ['2x'],
},
{
'size': '1024x1024',
'idiom': 'universal',
'platform': 'ios',
'scales': ['1x'],
},
{
'size': '1024x1024',
'idiom': 'ios-marketing',
'scales': ['1x'],
},
];
final List<Map<String, dynamic>> imageList = <Map<String, dynamic>>[];
for (final config in imageConfigurations) {
final size = config['size']!;
final idiom = config['idiom']!;
final platform = config['platform'];
final List<String> scales = config['scales'];
for (final scale in scales) {
final filename = '$fileNamePrefix-$size@$scale.png';
imageList.add(
ContentsImageObject(
size: size,
idiom: idiom,
filename: filename,
platform: platform,
scale: scale,
).toJson(),
);
}
}
// Prevent ios-marketing icon from being tinted or dark
if (darkFileNamePrefix != null) {
for (final config
in imageConfigurations.where((e) => e['idiom'] == 'universal')) {
final size = config['size']!;
final idiom = config['idiom']!;
final platform = config['platform'];
final List<String> scales = config['scales'];
for (final scale in scales) {
final filename = '$darkFileNamePrefix-$size@$scale.png';
imageList.add(
ContentsImageObject(
size: size,
idiom: idiom,
filename: filename,
platform: platform,
scale: scale,
appearances: <ContentsImageAppearanceObject>[
ContentsImageAppearanceObject(
appearance: 'luminosity',
value: 'dark',
),
],
).toJson(),
);
}
}
}
if (tintedFileNamePrefix != null) {
for (final config
in imageConfigurations.where((e) => e['idiom'] == 'universal')) {
final size = config['size']!;
final idiom = config['idiom']!;
final platform = config['platform'];
final List<String> scales = config['scales'];
for (final scale in scales) {
final filename = '$tintedFileNamePrefix-$size@$scale.png';
imageList.add(
ContentsImageObject(
size: size,
idiom: idiom,
filename: filename,
platform: platform,
scale: scale,
appearances: <ContentsImageAppearanceObject>[
ContentsImageAppearanceObject(
appearance: 'luminosity',
value: 'tinted',
),
],
).toJson(),
);
}
}
}
return imageList;
}