file_picker_platform_interface 套件為 file_picker 插件在多個平台之間提供共用的 API 表面與資料合約。它作為共同基礎,讓 Android、iOS、Linux、macOS、Web 與 Windows 上的檔案選擇功能保持一致。透過定義與平台無關的介面,它簡化了跨平台開發,並確保無論底層作業系統如何,行為皆能統一。此套件對於開發需要可靠檔案擷取功能的外掛或應用程式之開發者而言至關重要。
適用情境
跨平台檔案選擇
檔案選擇外掛開發
統一的檔案選擇器 API
多平台應用整合
共享資料合約實作
跨平台保持一致性
主要特色
平台無關的 API 設計
共用資料契約
對六大主要平台的支援
啟用外掛擴展性
標準化檔案元資料處理
促進程式碼重用
適合對象
開發檔案選擇器外掛的開發者
跨平台 Flutter 應用程式
需要一致檔案操作的團隊
多平台套件的維護者
將檔案選擇功能整合到應用程式中的開發人員
使用建議
每個平台都需要配套的實現
不適用於最終使用者應用程式中的直接使用
依賴於平台特定的外掛程式
可能需要針對每個平台進行額外設定
僅限 API 定義,不包含功能
最佳使用於較大的外掛程式生態系統中
原始 README
以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。
File Picker
A Flutter plugin that lets you use the native file explorer to pick single or multiple files, with extension filtering, directory selection, and save-file dialogs, across Android, iOS, Linux, macOS, Windows, and Web.
This repository is a Melos workspace hosting file_picker as a federated plugin: a single cross-platform API package on top of one implementation package per platform, all versioned and published independently.
Web implementation, including Wasm compilation support.
Almost all apps should only ever depend on file_picker directly. The platform packages are pulled in transitively and registered automatically by Flutter's plugin system; you only reach for one of them directly if you need a platform-specific API that isn't exposed on the shared facade (for example FilePickerDarwin.skipEntitlementsChecks() on macOS).
Quick start
dependencies:file_picker:^13.0.0
import'package:file_picker/file_picker.dart';
final file = awaitFilePicker.pickFile();
if (file != null) {
print(file.name);
print(await file.length()); // Returns Future<int?> (or use file.lengthSync())
}
See packages/file_picker/README.md for the full feature list, platform compatibility chart, and more usage examples (multiple files, extension filters, directory picking, save-file dialogs).
Migration
Upgrading to v13? See the Migrating to v13 Guide for details on PlatformFile.length() returning Future<int?> and the removal of legacy v12-deprecated parameters.
Upgrading from pre-v12? See the Migrating to v12 Guide for the federated architecture changes (FilePicker.pickFiles() returning List<PlatformFile>, platform options, and streaming).
Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request, it covers testing requirements, versioning, and changelog conventions for this workspace.
To work on this repository locally:
dart pub global activate melos
melos bootstrap
melos run analyze # flutter analyze across every package
melos run test# flutter test across every package
Each package keeps its own pubspec.yaml and CHANGELOG.md and is released independently, only the package(s) you actually changed need a version bump.
Credits
file_picker was created and maintained by Miguel Ruivo, starting in 2018, growing it from a single Android/iOS plugin into the federated, cross-platform package it is today. This repository continues that work under new ownership, built entirely on the foundation of his years of effort.
Thank you, Miguel.
License
MIT, see LICENSE. Every package in this repository is released under the same license.