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

Flutter获取存储全类型文件及文件夹方案咨询(flutter_file_manager已废弃)

替代flutter_file_manager的设备文件遍历方案

方案1:自定义实现(基于Dart IO + 权限处理)

这是最稳定灵活的方案,不依赖第三方文件管理包,完全自主控制遍历逻辑。

步骤:

  1. 添加依赖到pubspec.yaml:
dependencies:
  permission_handler: ^10.2.0
  path_provider: ^2.0.11
  1. 请求存储权限:
import 'package:permission_handler/permission_handler.dart';

Future<bool> requestStoragePermission() async {
  final status = await Permission.storage.request();
  return status.isGranted;
}
  1. 获取设备存储根路径:
import 'package:path_provider/path_provider.dart';
import 'dart:io';

Future<String> getStorageRoot() async {
  if (Platform.isAndroid) {
    return (await getExternalStorageDirectory())?.path ?? '';
  } else if (Platform.isIOS) {
    return (await getApplicationDocumentsDirectory()).path;
  }
  return '';
}
  1. 递归遍历所有文件和文件夹:
import 'dart:io';

Future<List<FileSystemEntity>> getAllFilesAndFolders(String dirPath) async {
  final entities = <FileSystemEntity>[];
  final directory = Directory(dirPath);
  
  if (!await directory.exists()) return entities;
  
  final items = directory.listSync(recursive: false);
  for (final item in items) {
    entities.add(item);
    if (item is Directory) {
      entities.addAll(await getAllFilesAndFolders(item.path));
    }
  }
  return entities;
}

方案2:使用file_picker实现文件夹选择+遍历

如果需求是让用户手动选择文件夹后再遍历内容,file_picker是维护活跃的成熟方案:

  1. 添加依赖:
dependencies:
  file_picker: ^5.3.2
  1. 选择文件夹并遍历:
import 'package:file_picker/file_picker.dart';

Future<void> pickAndTraverseFolder() async {
  final selectedFolder = await FilePicker.platform.getDirectoryPath();
  if (selectedFolder != null) {
    final allEntities = await getAllFilesAndFolders(selectedFolder);
    // 处理获取到的文件/文件夹列表
  }
}

注:遍历逻辑可复用方案1中的getAllFilesAndFolders函数

关键注意事项

  • Android 13及以上版本,除了Permission.storage,还需根据文件类型请求READ_MEDIA_IMAGES、READ_MEDIA_AUDIO等细分权限。
  • iOS需在Info.plist中添加NSDocumentDirectoryUsageDescription等权限描述,说明访问存储的用途。

内容的提问来源于stack exchange,提问作者Faizan Abbas Bangash

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 21:45:33