file_selector 0.9.2 icon indicating copy to clipboard operation
file_selector: ^0.9.2 copied to clipboard

Flutter plugin for opening and saving files, or selecting directories, using native file selection UI.

file_selector #

pub package

A Flutter plugin that manages files and interactions with file dialogs.

iOSLinuxmacOSWebWindows
SupportiOS 9+Any10.11+AnyWindows 10+

Usage #

To use this plugin, add file_selector as a dependency in your pubspec.yaml file.

macOS #

You will need to add an entitlement for either read-only access:

  <key>com.apple.security.files.user-selected.read-only</key>
  <true/>

or read/write access:

  <key>com.apple.security.files.user-selected.read-write</key>
  <true/>

depending on your use case.

Examples #

Here are small examples that show you how to use the API. Please also take a look at our example app.

Open a single file

final XTypeGroup typeGroup = XTypeGroup(
  label: 'images',
  extensions: <String>['jpg', 'png'],
);
final XFile? file =
    await openFile(acceptedTypeGroups: <XTypeGroup>[typeGroup]);

Open multiple files at once

final XTypeGroup jpgsTypeGroup = XTypeGroup(
  label: 'JPEGs',
  extensions: <String>['jpg', 'jpeg'],
);
final XTypeGroup pngTypeGroup = XTypeGroup(
  label: 'PNGs',
  extensions: <String>['png'],
);
final List<XFile> files = await openFiles(acceptedTypeGroups: <XTypeGroup>[
  jpgsTypeGroup,
  pngTypeGroup,
]);

Saving a file

const String fileName = 'suggested_name.txt';
final String? path = await getSavePath(suggestedName: fileName);
if (path == null) {
  // Operation was canceled by the user.
  return;
}

final Uint8List fileData = Uint8List.fromList('Hello World!'.codeUnits);
const String mimeType = 'text/plain';
final XFile textFile =
    XFile.fromData(fileData, mimeType: mimeType, name: fileName);
await textFile.saveTo(path);

Filtering by file types #

Different platforms support different type group filter options. To avoid ArgumentErrors on some platforms, ensure that any XTypeGroups you pass set filters that cover all platforms you are targeting, or that you conditionally pass different XTypeGroups based on Platform.

LinuxmacOSWebWindows
extensions✔️✔️✔️✔️
mimeTypes✔️✔️†✔️
macUTIs✔️
webWildCards✔️

mimeTypes are not supported on version of macOS earlier than 11 (Big Sur).

141
likes
140
pub points
97%
popularity

Publisher

verified publisher iconflutter.dev

Flutter plugin for opening and saving files, or selecting directories, using native file selection UI.

Repository (GitHub)
View/report issues

Documentation

API reference

License

Icon for licenses.BSD-3-Clause (LICENSE)

Dependencies

file_selector_ios, file_selector_linux, file_selector_macos, file_selector_platform_interface, file_selector_web, file_selector_windows, flutter

More

Packages that depend on file_selector