Search packages, repositories and app categories

GitHub repositoryhalildurmus/filepicker_windows

filepicker_windows

File and directory picker for Windows that uses common dialog controls.

filepicker_windows project cover
Stars
70
Forks
19
Last push (UTC)
Feb 26, 2026
Project status
Archived

Original README

English project snapshot. Visit GitHub for the latest content.

This package has moved

The package can now be found at https://github.com/halildurmus/win32/tree/main/packages/filepicker_windows.


ci Package: filepicker_windows Publisher: halildurmus.dev Language: Dart License: BSD-3-Clause

File and directory picker for Windows that uses common dialog controls.

This package builds on top of the package:win32 and provides a high-level abstraction over native file picker APIs. It eliminates the need to work directly with FFI, raw pointers, or low-level Win32 calls while preserving performance and correctness.

✨ Features

  • 📂 Open a single file or multiple files simultaneously
  • 💾 Save a file
  • 📁 Select a directory
  • 🔍 Filter by file type with friendly display names
  • 📌 Add custom places to the dialog's navigation pane
  • 🪟 Pin to the correct window — always opens as a modal in front of your app

🚀 Getting Started

Add the package to your pubspec.yaml:

dependencies:
  filepicker_windows: ^3.0.0

Then import it:

import 'package:filepicker_windows/filepicker_windows.dart';

⚡ Quick Example

Show a file open dialog:

import 'package:filepicker_windows/filepicker_windows.dart';

void main() {
  final picker = OpenFilePicker()
    ..filterSpecification = {
      'Word Document (*.doc)': '*.doc',
      'Web Page (*.htm; *.html)': '*.htm;*.html',
      'Text Document (*.txt)': '*.txt',
      'All Files': '*.*',
    }
    ..defaultFilterIndex = 0
    ..defaultExtension = 'doc'
    ..title = 'Select a document';

  final file = picker.getFile();
  if (file != null) {
    print('Selected file: ${file.path}');
  } else {
    print('No file selected.');
  }
}

More examples — including multi-file selection, save dialogs, directory picking, and custom places — are available in the example directory.

For a more advanced demonstration, see example/wallpaper/, a Flutter app that uses the picker to select an image and set it as the desktop wallpaper.

📝 Documentation

Full API reference is available here:

👉 API Reference.

Additional usage examples are located in the example directory.

🐞 Features and Bugs

If you encounter bugs or need additional functionality, please file an issue.

Halil Durmus GitHub avatar
GitHub author

Halil Durmus ↗

Software Engineer • Dart Enthusiast💙🎯

LanguagesDartC++CMakeC

Categories

Dependencies used

Dependency list 7 items

  • ffi^2.2.0
  • ffi_leak_tracker^0.1.0
  • win32^6.0.0
  • checksDevelopment^0.3.1
  • halildurmus_hooksDevelopment^0.1.1
  • halildurmus_lintsDevelopment^2.0.0
  • testDevelopment^1.29.0

How do I choose a repository?

Start with your use case, compare repository activity, and check the original project before adopting it.

  1. Search by repository name, owner or description, then narrow the results by topic.
  2. Compare stars, forks and recent pushes. Stars show community interest, not a guarantee of quality.
  3. Read the README, license and issues on GitHub before using a project.

Sources and maintenance

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗