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

Flutter如何获取Android/iOS相册目录的文件路径列表?

解决方案

1. 使用 image_picker 获取指定视频的路径

这个包虽主打媒体文件选择,但能直接返回选中视频的本地路径,满足你获取文件路径的需求:

  • 在 pubspec.yaml 添加依赖:
    dependencies:
      image_picker: ^1.0.4
    
  • 核心代码示例:
    import 'package:image_picker/image_picker.dart';
    
    Future<void> pickVideoFromGallery() async {
      final picker = ImagePicker();
      // 选择单个视频
      final XFile? video = await picker.pickVideo(source: ImageSource.gallery);
      if (video != null) {
        String videoPath = video.path;
        // 拿到路径后即可生成描述性组件
        print("选中的视频路径: $videoPath");
      }
    
      // 多选视频(支持iOS 14+、Android 13+)
      final List<XFile> videos = await picker.pickMultiImage(
        mediaType: MediaType.video,
      );
      for (var video in videos) {
        print("多选的视频路径: ${video.path}");
      }
    }
    

2. 使用 photo_manager 查询相册中所有视频文件路径

如果需要批量获取相册内所有视频的路径,photo_manager 是更合适的选择,它能直接访问系统媒体库并返回完整的视频路径列表:

  • 在 pubspec.yaml 添加依赖:
    dependencies:
      photo_manager: ^2.7.2
    
  • 核心代码示例:
    import 'package:photo_manager/photo_manager.dart';
    
    Future<List<String>> getAllGalleryVideoPaths() async {
      // 请求媒体库权限
      final PermissionState permission = await PhotoManager.requestPermissionExtend();
      if (permission.isAuth) {
        // 获取所有视频相册集合
        List<AssetPathEntity> paths = await PhotoManager.getAssetPathList(
          type: RequestType.video,
          onlyAll: true, // 仅获取"所有视频"相册
        );
        if (paths.isNotEmpty) {
          // 分页获取相册内的视频资源(这里取前100条,可按需调整)
          List<AssetEntity> videoAssets = await paths.first.getAssetListPaged(page: 0, size: 100);
          List<String> videoPaths = [];
          for (var asset in videoAssets) {
            String? path = await asset.file?.path;
            if (path != null) {
              videoPaths.add(path);
            }
          }
          return videoPaths;
        }
      }
      return [];
    }
    

关键注意事项

  • 权限配置:Android需在 AndroidManifest.xml 中添加 READ_MEDIA_VIDEO(Android 13+)或 READ_EXTERNAL_STORAGE(低版本)权限;iOS需在 Info.plist 中添加 NSPhotoLibraryUsageDescription 权限描述。
  • 避免硬编码路径:iOS相册路径沙盒化,Android不同厂商设备的相册路径存在差异,直接硬编码会导致兼容性问题,上述包已封装平台差异,是更可靠的实现方式。

内容的提问来源于stack exchange,提问作者Christopher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 03:42:13