pickMultiImagesAsXFiles method
Cross-platform multi pick using XFile (works on web when using file_picker).
If features.webFilePicker enables WebFilePickerFeatureConfig.useFilePickerForMultiPick,
uses file_picker (web/desktop friendly). Otherwise uses ImagePicker.pickMultiImage.
Implementation
Future<List<XFile>> pickMultiImagesAsXFiles({
int? maxImages,
bool requestFullMetadata = true,
}) async {
final useFp = features?.webFilePicker != null &&
features!.webFilePicker!.enabled &&
features!.webFilePicker!.useFilePickerForMultiPick;
if (useFp) {
final result = await FilePicker.platform.pickFiles(
type: FileType.image,
allowMultiple: true,
withData: features!.webFilePicker!.withData || kIsWeb,
);
if (result == null || result.files.isEmpty) return [];
final out = <XFile>[];
for (final p in result.files) {
if (p.bytes != null) {
out.add(XFile.fromData(p.bytes!, name: p.name, mimeType: 'image/*'));
} else if (p.path != null) {
out.add(XFile(p.path!));
}
}
if (maxImages != null && out.length > maxImages) {
return out.take(maxImages).toList();
}
return out;
}
final picked = await _picker.pickMultiImage(
limit: maxImages,
requestFullMetadata: requestFullMetadata,
);
return picked;
}