file_picker_darwin 套件為 Flutter 應用程式中的 iOS 與 macOS 提供原生檔案選擇、儲存與目錄選取功能。它是 file_picker 插件的平台特定實作,利用原生系統 API 來確保與 Apple 運作系統的無縫整合。這讓使用者能透過熟悉系統對話方塊瀏覽、選擇與儲存檔案。該套件支援檔案與目錄作業,確保在 Darwin 平台上安全且高效地處理檔案。
適用情境
從設備文件系統中選擇檔案
將檔案儲存到使用者定義的位置
導航和選擇目錄
在iOS應用中整合原生檔案對話框
在 macOS 桌面應用中啟用檔案上傳
主要特色
iOS 和 macOS 上的原生檔案選擇器 UI
支援檔案和目錄選擇
透過系統權限實現安全檔案存取
跨平台一致性與 file_picker
內建的檔案儲存作業支援
適合對象
iOS應用開發者需要檔案選擇
macOS 桌面 Flutter 應用需要檔案 I/O
處理文件匯入或匯出的應用程式
使用 file_picker 插件的開發者堆疊
需要原生檔案系統整合的專案
使用建議
需要正確的 iOS/macOS 權限設定
僅限 Darwin 平台(iOS 與 macOS)
依賴於主檔案_picker套件
可能需要為沙箱環境進行額外設定
檔案存取受到應用程式沙盒政策限制
原始 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.