A Flutter plugin that provides native file picker dialogs for mobile, web, and desktop platforms with extensive filtering and cloud support.
File Picker is a Flutter plugin that provides access to native file explorer dialogs for selecting and saving files across mobile, web, and desktop platforms. It solves the problem of implementing platform-specific file interaction by offering a unified API that works everywhere Flutter runs, including support for filtering, cloud storage, and directory picking.
Flutter developers building applications that require file selection or saving functionality, such as document editors, media apps, or utilities that need to interact with the user's file system.
Developers choose File Picker because it offers a consistent, native file picking experience across all platforms with a simple API, eliminating the need to write platform-specific code. Its extensive feature set, including cloud integration and flexible filtering, makes it the most comprehensive file picker solution for Flutter.
File picker plugin for Flutter, compatible with mobile (iOS & Android), Web, Desktop (Mac, Linux, Windows) platforms with Flutter Go support.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses OS default file explorers on iOS, Android, Web, macOS, Linux, and Windows, ensuring a familiar user experience as highlighted in the multi-platform compatibility chart.
Supports picking single or multiple files, directories, or both simultaneously, with extension filtering for custom formats like PDF or JPG, as shown in the usage examples.
Enables direct file picking from Google Drive, Dropbox, and iCloud, simplifying cloud-based workflows without additional plugins.
Optionally loads file data into memory as Uint8List for quick manipulation and provides XFile objects for easy integration with other Flutter libraries, as demonstrated in the Firebase upload example.
Some APIs like `clearTemporaryFiles()` and `pickFileAndDirectoryPaths()` have limited platform availability, as shown in the compatibility chart, leading to potential cross-platform inconsistencies.
Requires separate configuration for Android, iOS, Web, and Desktop platforms, as detailed in the Wiki setup section, which can be cumbersome for rapid prototyping.
Loading files immediately into memory can cause high memory usage for large files, a concern not addressed with built-in streaming or chunking options.