Flutter每日库: image_picker选取相册图片视频

在移动开发中,"选择图片/视频" 是高频需求。无论是社交应用的发布动态,还是工具类App的头像上传,都离不开这个功能。

Flutter官方推荐的 image_picker 插件,凭借其跨平台兼容性简洁API设计,成为开发者的首选。它支持:

  • 📸 拍照或从相册选图
  • 🎥 录制视频或选择视频
  • 🌟 多文件混合选择(图片+视频)

今天我们将通过6个核心场景案例,带你彻底掌握它的用法!


快速集成:添加依赖

pubspec.yaml 中添加最新版本依赖(以v1.0.4为例):

yaml 复制代码
dependencies:
  image_picker: ^1.0.4

🎯 核心功能代码详解

1️⃣ 从相册选择单张图片

dart 复制代码
final XFile? image = await picker.pickImage(source: ImageSource.gallery);
debugPrint("图片路径:${image?.path},文件名:${image?.name}");
  • 适用场景:用户头像上传、图片分享
  • 注意 :iOS需要配置 NSPhotoLibraryUsageDescription 权限描述!

2️⃣ 调用相机拍摄照片

dart 复制代码
final XFile? photo = await picker.pickImage(source: ImageSource.camera);
debugPrint("照片路径:${photo?.path}");

3️⃣ 从相册选择视频

dart 复制代码
final XFile? galleryVideo = await picker.pickVideo(source: ImageSource.gallery);
debugPrint("视频路径:${galleryVideo?.path}");
  • 扩展功能 :结合 video_player 插件实现预览功能。

4️⃣ 录制短视频

dart 复制代码
final XFile? cameraVideo = await picker.pickVideo(source: ImageSource.camera);
debugPrint("视频路径:${cameraVideo?.path}");
  • 注意:Android可能需要额外处理视频录制时长限制。

5️⃣ 多图批量选择(最多20张)

dart 复制代码
final List<XFile> images = await picker.pickMultiImage();
for (var item in images) {
  debugPrint("图片路径:${item.path}");
}
  • 亮点:无需循环调用,一次操作即可获取多图!

6️⃣ 混合选择媒体文件(图片+视频)

dart 复制代码
// 选择单个文件
final XFile? media = await picker.pickMedia();

// 选择多个文件
final List<XFile> medias = await picker.pickMultipleMedia();
  • 跨平台提示pickMultipleMedia 在不同平台的表现可能略有差异。

避坑指南:常见问题

  1. 权限问题

    iOS需在 Info.plist 添加相册和相机权限描述;Android需动态申请 CAMERAWRITE_EXTERNAL_STORAGE 权限。

  2. 文件路径失效

    获取的路径可能是缓存路径,建议立即读取字节流或复制到持久化目录。

  3. Android压缩问题

    通过 imageQuality 参数控制压缩比例(默认100不压缩)。

相关推荐
maaath4 小时前
【maaath】Flutter for OpenHarmony 闹钟时钟应用开发实战
flutter·华为·harmonyos
maaath4 小时前
【maaath】Flutter for OpenHarmony 短信管理应用实战
flutter·华为·harmonyos
maaath5 小时前
【maaath】Flutter for OpenHarmony打造跨平台便签备忘录应用
flutter·华为·harmonyos
千码君20165 小时前
flutter:与Android Studio模拟器的调试分享
android·flutter
xmdy58666 小时前
Flutter+开源鸿蒙实战|智联邻里Day8 Lottie动画集成+url_launcher跳转拨号+个人中心完善+全局UI统一
flutter·开源·harmonyos
liulian091614 小时前
Flutter for OpenHarmony 跨平台开发:颜色选择器功能实战指南
flutter
liulian091618 小时前
Flutter for OpenHarmony 跨平台开发:BMI计算器功能实战指南
flutter·华为
xmdy586621 小时前
Flutter+开源鸿蒙实战|智安盾电商溯源平台Day1 项目搭建与整体方案拆解
flutter·开源·harmonyos
小白64021 天前
AI辅助设计Flutter蓝牙自动连接系统
人工智能·flutter
xmdy58661 天前
Flutter+开源鸿蒙实战|智联邻里Day6 引入GetX全局架构+升级版下拉刷新+Toast弹窗+网络状态监听
flutter·开源·harmonyos