file_picker_linux 套件提供 file_picker 插件的 Linux 專屬實作,利用 GTK3 與 XDG 桌面門戶功能,讓 Flutter 應用程式能原生選擇檔案與資料夾。該套件透過使用平台原生對話方塊,確保與 Linux 桌面環境無縫整合,為使用者提供熟悉且一致的體驗。此套件設計為與主要 file_picker 插件搭配使用,能在 Linux 系統上自動偵測並使用適當的後端。
適用情境
在 Linux 桌面應用程式中選擇檔案和目錄
在Flutter Linux應用中整合原生檔案對話方塊
支援從 Linux 桌面上傳檔案
在基於 Linux 的 Flutter 工具中啟用文件管理
使用 XDG 桌面門檻進行安全檔案存取
主要特色
基於 GTK3 的原生檔案選擇器
XDG 桌面門檻整合
自動平台檢測
透過門戶實現安全的檔案存取
與 file_picker 核心的跨相容性
適合對象
面向 Linux 桌面的 Flutter 開發人員
Linux 上需要原生檔案對話框的應用程式
使用 XDG 桌面門檻進行安全性的專案
開發以 Linux 為首選的 Flutter 應用程式之開發者
維護多平台檔案選擇器的團隊
使用建議
需要 Linux 環境
依賴於 file_picker 核心套件
可能需要額外的系統權限
僅限 Linux 平台
目標系統上的 GTK3 和門戶可用性
原始 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.