当前位置: 首页 > news >正文

在 Flutter app 中,通过视频 URL 下载视频到手机相册

在 Flutter app 中,通过视频 URL 下载视频到手机相册可以通过以下步骤实现:

1. 添加依赖

使用 dio 下载文件,结合 path_provider 获取临时存储路径,以及 gallery_saver 将文件保存到相册。

pubspec.yaml 中添加以下依赖:

dependencies:dio: ^5.0.0path_provider: ^2.0.15gallery_saver: ^2.3.0

然后运行 flutter pub get 安装依赖。


2. 下载并保存视频

实现一个函数,完成以下步骤:

  1. 获取临时文件夹路径
  2. 下载视频到本地
  3. 将下载的视频保存到相册

以下是示例代码:

import 'dart:io';import 'package:dio/dio.dart';
import 'package:path_provider/path_provider.dart';
import 'package:gallery_saver/gallery_saver.dart';Future<void> downloadVideoToGallery(String videoUrl) async {try {// 获取临时目录路径final tempDir = await getTemporaryDirectory();final tempPath = '${tempDir.path}/temp_video.mp4';// 使用 Dio 下载文件Dio dio = Dio();await dio.download(videoUrl, tempPath);// 将视频保存到相册bool? result = await GallerySaver.saveVideo(tempPath);if (result == true) {print("视频已保存到相册");} else {print("保存视频失败");}// 删除临时文件final tempFile = File(tempPath);if (await tempFile.exists()) {await tempFile.delete();}} catch (e) {print("下载或保存视频时出错: $e");}
}

3. 调用方法

在需要下载视频的地方调用 downloadVideoToGallery 方法,传入视频 URL:

ElevatedButton(onPressed: () {final videoUrl = "https://example.com/path-to-video.mp4";downloadVideoToGallery(videoUrl);},child: Text("下载视频"),
)

4. 权限配置

Android

AndroidManifest.xml 中添加存储权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

在 Android 11(API 30)及以上版本,推荐使用 MediaStore 接口,GallerySaver 已兼容。

iOS

ios/Runner/Info.plist 中添加以下权限描述:

<key>NSPhotoLibraryUsageDescription</key>
<string>需要访问您的相册以保存视频。</string>

5. 注意事项

  • 确保 URL 有效:视频 URL 必须指向可下载的视频文件。
  • 错误处理:对网络错误、权限错误等情况进行处理。
  • 权限检查:在 Android 运行时需动态申请存储权限,使用 permission_handler 包可简化操作。
http://www.lryc.cn/news/495346.html

相关文章:

  • Nature Methods | 人工智能在生物与医学研究中的应用
  • Axure PR 9 随机函数 设计交互
  • 【人工智能基础05】决策树模型
  • 【人工智能基础03】机器学习(练习题)
  • HarmonyOS(60)性能优化之状态管理最佳实践
  • 数据库课程设计报告 超市会员管理系统
  • C++算法练习-day54——39.组合总和
  • 计算机毕业设计PySpark+Hadoop中国城市交通分析与预测 Python交通预测 Python交通可视化 客流量预测 交通大数据 机器学习 深度学习
  • Linux的文件系统
  • 【Vue3】从零开始创建一个VUE项目
  • 9)语法分析:半倒装和全倒装
  • Scala关于成绩的常规操作
  • 使用Java实现度分秒坐标转十进制度的实践
  • 根据后台数据结构,构建搜索目录树
  • 食品计算—FoodSAM: Any Food Segmentation
  • 2411rust,1.83
  • tomcat加载三方包顺序
  • 计算机的错误计算(一百七十一)
  • js对于json的序列化、反序列化有哪几种方法
  • Linux——基础命令(2) 文件内容操作
  • 简单搭建qiankun的主应用和子应用并且用Docker进行服务器部署
  • Python知识分享第十六天
  • 管家婆财贸ERP BR045.大类存货库存数量明细表
  • Pytorch-GPU版本离线安装
  • k8s 1.28 二进制安装与部署
  • 【C语言】扫雷游戏(一)
  • 二分法篇——于上下边界的扭转压缩间,窥见正解辉映之光(1)
  • # 01_Python基础到实战一飞冲天(三)--python面向对象(一)--简单类
  • sentinel使用手册
  • 搜索二维矩阵 II(java)