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 {
    // FilePicker uses SAF (Storage Access Framework) which doesn't require permissions
    // The system handles permission through the document picker UI
    if (!await _checkAndRequestPermission(context)) {
      return [];
    }

    if (Platform.isAndroid || Platform.isIOS) {
      int maxCount = config?.maxCount ?? maxFileCount;

      final List<PickerResult> results = await FilePickerPlatform.pickFiles(
        maxCount: maxCount,
        allowedMimeTypes: [],
      );

      if (results.isEmpty) {
        return [];
      }

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

      return results;
    } else {
      throw UnsupportedError('FilePicker only supports Android and iOS');
    }
  } catch (e) {
    debugPrint('FilePicker.pickFiles error: $e');
    return [];
  }
}