file_picker_desktop 1.1.0 copy "file_picker_desktop: ^1.1.0" to clipboard
file_picker_desktop: ^1.1.0 copied to clipboard

outdated

A package that lets you use a native file explorer on Windows, macOS, and Linux to save a file, select a directory, and select one or more files with support for extension filters.

File Picker Desktop #

CI Pipeline

This repository contains a Dart package that allows you to use a native file explorer on Windows, macOS, and Linux for three things:

  • picking files
  • picking directories
  • saving files

Features #

  • 🎉 This package does not require Go Flutter. This package is written entirely in Dart!!! No dependencies on Go or Go Flutter.
  • 💾 Simple API for picking a single file or multiple files with support for filtering the allowed file extensions.
  • 📁 Simple API for picking a directory.
  • 💿 Simple API for saving a file.
  • 🔧 Different filtering options for file types included (+ customizable).
  • 🎉 Customizable title of the dialog.
  • 🤖 Runs on Linux, macOS, and Windows.

⚠️ This package does not support Android, iOS, or the web. Please refer to Miguel Pruivo's package github.com/miguelpruivo/flutter_file_picker which offers the same functionality for Android, iOS, and the web. I tried my best to provide the same API as Miguel's package.

The following screenshots show the file picker dialog on Linux, macOS, and Windows:

Linux File Picker Linux Directory Picker Linux Save File Dialog
[Select file on Linux] [Select directory on Linux] [Save file on Linux]
macOS File Picker macOS Directory Picker macOS Save File Dialog
[Select file on macOS] [Select directory on macOS] [Save file on macOS]
Windows Windows Directory Picker Windows Save File Dialog
[Select file on Windows] [Select directory on Windows] [Save file on Windows]

Usage #

Add package to pubspec.yaml: #


dependencies:
  file_picker_desktop: ^1.1.0

Import: #

import 'package:file_picker_desktop/file_picker_desktop.dart';

Dialog for picking a single File: #

try {
  final result = await pickFiles(
    allowMultiple: false,
  );
  if (result != null) {
    File file = File(result.files.single.path);
  } else {
    // User canceled the picker
  }
} catch (e) {
  print(e);
}

Dialog for picking multiple files: #

try {
  final result = await pickFiles(
    allowMultiple: true,
  );
  if (result != null) {
    List<File> files = result.paths
        .where((path) => path != null)
        .map((path) => File(path!))
        .toList();
  } else {
    // User canceled the picker
  }
} catch (e) {
  print(e);
}

Dialog for picking multiple files with extension filter: #

final result = await pickFiles(
  allowMultiple: true,
  type: FileType.custom,
  allowedExtensions: ['jpg', 'pdf', 'doc'],
);

Load the results and file details: #

FilePickerResult? result = await pickFiles();

if (result != null) {
  PlatformFile file = result.files.first;

  print(file.name);
  print(file.bytes);
  print(file.size);
  print(file.extension);
  print(file.path);
} else {
  // User canceled the picker
}

Dialog for picking a directory: #

try {
  final selectedDirectory = await getDirectoryPath();
  if (selectedDirectory != null) {
    File directory = File(selectedDirectory);
  } else {
    // User canceled the picker
  }
} catch (e) {
  print(e);
}

Dialog for saving a file: #

try {
  final String? selectedFileName = await saveFile(
    defaultFileName: 'default-file.txt',
  );

  if (selectedFileName != null) {
  	File file = File(selectedFileName);
  } else {
    // User canceled the picker
  }
} catch (e) {
    print(e);
}

Example Flutter App #

[Demo Flutter App]

The directory ./example/ contains an example Flutter app which showcases the file picker's functionality. You can run this example app the following way:

cd ./example/

flutter create .

# Choose the appropriate option depending on your OS
flutter config --enable-linux-desktop
flutter config --enable-macos-desktop
flutter config --enable-windows-desktop

flutter run
18
likes
0
points
145
downloads

Publisher

unverified uploader

Weekly Downloads

A package that lets you use a native file explorer on Windows, macOS, and Linux to save a file, select a directory, and select one or more files with support for extension filters.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

ffi, path

More

Packages that depend on file_picker_desktop