pickFiles method

  1. @override
Future<FilePickerResult?> pickFiles({
  1. FileType type = FileType.any,
  2. List<String>? allowedExtensions,
  3. String? dialogTitle,
  4. String? initialDirectory,
  5. dynamic onFileLoading(
    1. FilePickerStatus
    )?,
  6. bool? allowCompression = true,
  7. bool allowMultiple = false,
  8. bool? withData = false,
  9. int compressionQuality = 30,
  10. bool? withReadStream = false,
  11. bool lockParentWindow = false,
  12. bool readSequential = false,
})
override

Retrieves the file(s) from the underlying platform

Default type set to FileType.any with allowMultiple set to false. Optionally, allowedExtensions might be provided (e.g. [pdf, svg, jpg].).

If withData is set, picked files will have its byte data immediately available on memory as Uint8List which can be useful if you are picking it for server upload or similar. However, have in mind that enabling this on IO (iOS & Android) may result in out of memory issues if you allow multiple picks or pick huge files. Use withReadStream instead. Defaults to true on web, false otherwise. Not supported on macOS.

If withReadStream is set, picked files will have its byte data available as a Stream<List<int>> which can be useful for uploading and processing large files. Defaults to false. Not supported on macOS.

If you want to track picking status, for example, because some files may take some time to be cached (particularly those picked from cloud providers), you may want to set onFileLoading handler that will give you the current status of picking. Not supported on macOS.

If allowCompression is set, it will allow media to apply the default OS compression. Defaults to true.

If lockParentWindow is set, the child window (file picker window) will stay in front of the Flutter window until it is closed (like a modal window). This parameter works only on Windows desktop. On macOS the parent window will be locked and this parameter is ignored.

dialogTitle can be optionally set on desktop platforms to set the modal window title. Not supported on macOS. It will be ignored on other platforms.

initialDirectory can be optionally set to an absolute path to specify where the dialog should open. Only supported on Linux, macOS, and Windows. On macOS the home directory shortcut (~/) is not necessary and passing it will be ignored. On macOS if the initialDirectory is invalid the user directory or previously valid directory will be used.

readSequential can be optionally set on web to keep the import file order during import. Not supported on macOS.

The result is wrapped in a FilePickerResult which contains helper getters with useful information regarding the picked List<PlatformFile>.

For more information, check the API documentation.

Note: This requires the User Selected File Read entitlement on macOS.

Returns null if aborted.

Implementation

@override
Future<FilePickerResult?> pickFiles({
  FileType type = FileType.any,
  List<String>? allowedExtensions,
  String? dialogTitle,
  String? initialDirectory,
  Function(FilePickerStatus)? onFileLoading,
  bool? allowCompression = true,
  bool allowMultiple = false,
  bool? withData = false,
  int compressionQuality = 30,
  bool? withReadStream = false,
  bool lockParentWindow = false,
  bool readSequential = false,
}) =>
    _getPath(
      type,
      allowMultiple,
      allowCompression,
      allowedExtensions,
      onFileLoading,
      withData,
      withReadStream,
      compressionQuality,
    );