pickMultiImages method
Future<List<File> >
pickMultiImages({
- required BuildContext context,
- int? maxImages,
- bool requestFullMetadata = true,
Picks multiple images from the gallery (iOS 14+; may be limited on older OS).
When features.webFilePicker is set with WebFilePickerFeatureConfig.useFilePickerForMultiPick,
uses file_picker on non-web platforms. On web, prefer pickMultiImagesAsXFiles.
Implementation
Future<List<File>> pickMultiImages({
required BuildContext context,
int? maxImages,
bool requestFullMetadata = true,
}) async {
try {
final useFp = features?.webFilePicker != null &&
features!.webFilePicker!.enabled &&
features!.webFilePicker!.useFilePickerForMultiPick &&
!kIsWeb;
if (useFp) {
final result = await FilePicker.platform.pickFiles(
type: FileType.image,
allowMultiple: true,
withData: false,
);
if (result == null || result.files.isEmpty) {
files = [];
return [];
}
final list = <File>[];
for (final p in result.files) {
final path = p.path;
if (path != null) list.add(File(path));
}
if (maxImages != null && list.length > maxImages) {
files = list.take(maxImages).toList();
} else {
files = list;
}
} else {
final picked = await _picker.pickMultiImage(
limit: maxImages,
requestFullMetadata: requestFullMetadata,
);
if (picked.isEmpty) {
files = [];
return [];
}
files = picked.map((x) => File(x.path)).toList();
}
var result = files!;
if (compressImage) {
final compressed = <File>[];
final params = compressParams ?? defaultCompress;
for (final f in result) {
final out = await compress(image: f, compressParams: params);
compressed.add(out ?? f);
}
result = compressed;
}
files = result;
return result;
} catch (e, st) {
debugPrint('Error picking multiple images: $e\n$st');
files = [];
return [];
}
}