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.