pickFiles static method

Future<List<PickerResult>> pickFiles({
  1. int maxCount = 1,
  2. List<String> allowedMimeTypes = const [],
})

Pick files using native implementation

Implementation

static Future<List<PickerResult>> pickFiles({
  int maxCount = 1,
  List<String> allowedMimeTypes = const [],
}) async {
  if (!Platform.isAndroid && !Platform.isIOS) {
    throw UnsupportedError(
        'Native FilePicker is only supported on Android and iOS');
  }

  try {
    final result = await _methodChannel.invokeMethod('pickFiles', {
      'maxCount': maxCount,
      'allowedMimeTypes': allowedMimeTypes,
    });

    if (result == null || result is! List) {
      return [];
    }

    final List<PickerResult> pickerResults = [];
    for (final item in result) {
      if (item is Map) {
        pickerResults.add(PickerResult(
          filePath: item['filePath'] as String? ?? '',
          fileName: item['fileName'] as String? ?? '',
          fileSize: (item['fileSize'] as num?)?.toInt() ?? 0,
          extension: item['extension'] as String? ?? '',
        ));
      }
    }

    return pickerResults;
  } catch (e) {
    print('FilePickerPlatform.pickFiles error: $e');
    rethrow;
  }
}