一个针对 Windows 的 file_picker 插件的特定实现,利用 Win32 COM API 提供原生文件和目录选择功能。它使 Flutter 应用程序在 Windows 上能够访问系统原生文件对话框,确保与平台标准界面保持一致的用户体验。该插件专为与更广泛的 file_picker 生态系统无缝集成而设计,支持文件和文件夹选择,配置简单。该包作为 flutter_file_picker 仓库的一部分进行维护,仅针对 Windows 平台。
适合场景
在桌面应用程序中选择文件
选择数据导入的目录
在 Windows Flutter 应用中集成原生文件对话框
支持来自 Windows 客户端的文件上传
启用文档管理工作流
主要特点
使用原生 Win32 COM API
提供系统原生文件选择器 UI
仅限 Windows 的平台支持
与 file_picker 的无缝集成
最小化设置和配置
适合对象
面向 Windows 桌面的 Flutter 开发人员
Windows 上需要原生文件选择的应用程序
使用 file_picker 插件生态系统的项目
需要可靠文件浏览功能的桌面应用程序
寻求平台一致性的开发者
使用建议
仅适用于 Windows 平台
需要 Win32 API 兼容性
依赖于主文件_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.