pickImages method
Picks one or more images from the device gallery/photo picker.
Implementation
@override
Future<List<AdaptiveFile>> pickImages(PickerOptions options) async {
final extensions = <String>[
'jpg',
'jpeg',
'png',
'webp',
'gif',
'bmp',
'heic',
'heif',
];
if (options.mediaType == MediaType.video) {
extensions.addAll(['mp4', 'mov', 'avi', 'mkv']);
} else if (options.mediaType == MediaType.all) {
extensions.addAll(['mp4', 'mov', 'avi', 'mkv']);
}
final typeGroup = XTypeGroup(
label: options.mediaType == MediaType.video
? 'Videos'
: (options.mediaType == MediaType.all ? 'Media Files' : 'Images'),
extensions: extensions,
);
if (options.isMultiple) {
final files = await openFiles(acceptedTypeGroups: [typeGroup]);
if (files.isEmpty) return [];
final List<AdaptiveFile> results = [];
for (final file in files) {
final bytes = await file.readAsBytes();
results.add(
AdaptiveFile.fromBytes(
bytes,
name: file.name,
mimeType: file.mimeType,
size: await file.length(),
lastModified: await file.lastModified(),
).copyWith(path: file.path),
);
}
return results;
} else {
final file = await openFile(acceptedTypeGroups: [typeGroup]);
if (file == null) return [];
final bytes = await file.readAsBytes();
return [
AdaptiveFile.fromBytes(
bytes,
name: file.name,
mimeType: file.mimeType,
size: await file.length(),
lastModified: await file.lastModified(),
).copyWith(path: file.path),
];
}
}