You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Flutter中打开Windows系统文件夹并获取自定义指定路径?

需求实现方案

path_provider本身仅支持获取系统预设的沙箱、公共存储等固定路径,不具备唤起交互界面让用户自主选择路径的能力,需要搭配文件选择类插件实现需求,具体实现流程如下:

1. 依赖引入

选用跨端适配完善的file_picker插件配合path_provider使用,在pubspec.yaml中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  path_provider: ^2.1.0
  file_picker: ^6.1.1

执行flutter pub get完成依赖安装。

2. 端侧权限配置

  • Android端:在android/app/src/main/AndroidManifest.xml中添加存储权限:
    <!-- Android 13以下读写外部存储权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <!-- Android 13及以上媒体/文档访问权限按需添加 -->
    <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
    <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
    
  • iOS端:在ios/Runner/Info.plist中添加文档访问权限配置:
    <key>LSSupportsOpeningDocumentsInPlace</key>
    <true/>
    <key>UIFileSharingEnabled</key>
    <true/>
    
  • 桌面端(Windows/macOS/Linux)无需额外配置权限,直接调用即可。

3. 核心功能代码

调用插件方法唤起系统原生的文件选择交互界面,即可获取用户选中的自定义路径:

import 'package:file_picker/file_picker.dart';
import 'package:path_provider/path_provider.dart';

// 自定义路径选择方法
Future<String?> getCustomPath() async {
  // 唤起目录选择界面,返回用户选中的路径
  String? selectedDir = await FilePicker.platform.getDirectoryPath();
  
  // 如果用户取消选择,默认返回path_provider获取的应用文档目录
  selectedDir ??= (await getApplicationDocumentsDirectory()).path;
  return selectedDir;
}

注意:如果需要选择单个/多个文件而非目录,替换调用FilePicker.platform.pickFiles()方法即可,返回结果中可获取选中文件的路径、文件名等信息

4. 后续操作

拿到用户选中的路径后,即可直接在该路径下执行文件读写、打印资源导出、文件打开等目标操作。


内容的提问来源于stack exchange,提问作者Muhammad Arbaz Zafar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 13:54:03