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.