showFilePicker static method

Future<List<FileData>> showFilePicker({
  1. dynamic action(
    1. List<FileData>
    )?,
  2. FileType fileType = FileType.any,
  3. bool allowMultiple = false,
  4. List<String>? allowedExtensions,
  5. UCropOptions? crop,
})

Implementation

static Future<List<FileData>> showFilePicker({
  Function(List<FileData>)? action,
  FileType fileType = FileType.any,
  bool allowMultiple = false,
  List<String>? allowedExtensions,
  UCropOptions? crop,
}) async {
  try {
    final FileType type = allowedExtensions != null && allowedExtensions.isNotEmpty ? FileType.custom : (fileType == FileType.custom ? FileType.any : fileType);
    if (allowMultiple) {
      final List<PlatformFile> list = await FilePicker.pickFiles(type: type, allowedExtensions: allowedExtensions);
      if (list.isNullOrEmpty()) {
        action?.call(<FileData>[]);
        return <FileData>[];
      }
      final List<FileData> files = await _collect(list.map(_fromPlatformFile), crop);
      action?.call(files);
      return files;
    } else {
      final PlatformFile? platformFile = await FilePicker.pickFile(type: type, allowedExtensions: allowedExtensions);
      if (platformFile == null) {
        action?.call(<FileData>[]);
        return <FileData>[];
      }
      final List<FileData> files = await _collect(<Future<FileData>>[_fromPlatformFile(platformFile)], crop);
      action?.call(files);
      return files;
    }
  } catch (e) {
    action?.call(<FileData>[]);
    return <FileData>[];
  }
}