pickFilesCore static method
Called by pickFile and pickMultipleFiles.
Implementation
static Future<List<FcFilePickerPath>?> pickFilesCore(
{bool? allowsMultiple}) async {
if (Platform.isIOS) {
final iosPicker = IosDocumentPicker();
final files = await iosPicker.pick(IosDocumentPickerType.file,
multiple: allowsMultiple ?? false);
if (files == null) {
return null;
}
final res = files
.map((e) => FcFilePickerPath.fromPathAndUri(e.name, e.path, e.url))
.nonNulls
.toList();
return res.isEmpty ? null : res;
}
// Use fast native macOS picker.
if (Platform.isMacOS) {
final macosPicker = MacosFilePicker();
final files = await macosPicker.pick(MacosFilePickerMode.file,
allowsMultiple: allowsMultiple ?? false);
if (files == null) {
return null;
}
final res = files
.map((e) => FcFilePickerPath.fromPathAndUri(e.name, e.path, e.url))
.nonNulls
.toList();
return res.isEmpty ? null : res;
}
if (Platform.isAndroid) {
final files = await _safUtil.pickFiles(multiple: allowsMultiple ?? false);
if (files == null || files.isEmpty) {
return null;
}
final res =
files.map((e) => FcFilePickerPath.fromUri(e.name, e.uri)).toList();
return res.isEmpty ? null : res;
}
if (allowsMultiple == true) {
final files = await openFiles();
return files.isEmpty
? null
: files
.map((e) => FcFilePickerPath.fromPath(e.name, e.path))
.toList();
}
final file = await openFile();
return file == null
? null
: [FcFilePickerPath.fromPath(file.name, file.path)];
}