pickFiles static method

Future<List<PickerResult>> pickFiles({
  1. required BuildContext context,
  2. FilePickerConfig? config,
})

Implementation

static Future<List<PickerResult>> pickFiles({
  required BuildContext context,
  FilePickerConfig? config,
}) async {
  try {
    if (!await _checkAndRequestPermission(context)) {
      return [];
    }

    final file_picker.FilePickerResult? result = await file_picker.FilePicker.platform.pickFiles(
      type: config?.fileType != null ? _convertFileType(config!.fileType!) : file_picker.FileType.any,
    );

    if (result == null || result.files.isEmpty) {
      return [];
    }

    int maxCount = config?.maxCount ?? maxFileCount;
    List<file_picker.PlatformFile> files = result.files;

    if (files.length > maxCount) {
      if (context.mounted) {
        AtomicLocalizations atomicLocal = AtomicLocalizations.of(context);
        _showErrorDialog(context, atomicLocal.maxCountFile(maxCount));
      }
      files = files.take(maxCount).toList();
    }

    List<PickerResult> results = [];

    for (final file in files) {
      String finalPath = file.path ?? '';

      if (finalPath.isNotEmpty) {
        results.add(PickerResult(
          filePath: finalPath,
          fileName: file.name,
          fileSize: file.size,
          extension: path.extension(file.name).toLowerCase().replaceFirst('.', ''),
        ));
      }
    }

    return results;
  } catch (e) {
    debugPrint('FilePickerService.pickMultipleFiles error: $e');
    return [];
  }
}