A Flutter plugin that manages files and interactions with file dialogs.
Android | iOS | Linux | macOS | Web | Windows | |
---|---|---|---|---|---|---|
Support | SDK 19+ | iOS 11+ | Any | 10.14+ | Any | Windows 10+ |
To use this plugin, add file_selector
as a dependency in your pubspec.yaml file.
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.
Here are small examples that show you how to use the API. Please also take a look at our example app.
const XTypeGroup typeGroup = XTypeGroup( label: 'images', extensions: <String>['jpg', 'png'], ); final XFile? file = await openFile(acceptedTypeGroups: <XTypeGroup>[typeGroup]);
const XTypeGroup jpgsTypeGroup = XTypeGroup( label: 'JPEGs', extensions: <String>['jpg', 'jpeg'], ); const XTypeGroup pngTypeGroup = XTypeGroup( label: 'PNGs', extensions: <String>['png'], ); final List<XFile> files = await openFiles(acceptedTypeGroups: <XTypeGroup>[ jpgsTypeGroup, pngTypeGroup, ]);
const String fileName = 'suggested_name.txt'; final FileSaveLocation? result = await getSaveLocation(suggestedName: fileName); if (result == 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(result.path);
final String? directoryPath = await getDirectoryPath(); if (directoryPath == null) { // Operation was canceled by the user. return; }
Different platforms support different type group filter options. To avoid ArgumentError
s on some platforms, ensure that any XTypeGroup
s you pass set filters that cover all platforms you are targeting, or that you conditionally pass different XTypeGroup
s based on Platform
.
Andoid | iOS | Linux | macOS | Web | Windows | |
---|---|---|---|---|---|---|
extensions | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
mimeTypes | ✔️ | ✔️ | ✔️† | ✔️ | ||
uniformTypeIdentifiers | ✔️ | ✔️ | ||||
webWildCards | ✔️ |
† mimeTypes
are not supported on version of macOS earlier than 11 (Big Sur).
Feature | Description | Android | iOS | Linux | macOS | Windows | Web |
---|---|---|---|---|---|---|---|
Choose a single file | Pick a file/image | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Choose multiple files | Pick multiple files/images | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Choose a save location | Pick a directory to save a file in | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ |
Choose a directory | Pick a directory and get its path | ✔️† | ❌ | ✔️ | ✔️ | ✔️ | ❌ |
† Choosing a directory is no supported on versions of Android before SDK 21 (Lollipop).