【Flutter】支持多平台 多端保存图片到本地相册 (兼容 Web端 移动端 android 保存到本地)

这篇具有很好参考价值的文章主要介绍了【Flutter】支持多平台 多端保存图片到本地相册 (兼容 Web端 移动端 android 保存到本地)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

免责声明: 我只测试了Web端 和 Android端 可行哈文章来源地址https://www.toymoban.com/news/detail-696880.html

import 'dart:io';
import 'package:flutter/services.dart';
import 'package:http/http.dart' as http;
import 'package:universal_html/html.dart' as html;
import 'package:oktoast/oktoast.dart';
import 'package:image_gallery_saver/image_gallery_saver.dart';
import 'package:permission_handler/permission_handler.dart';




//申请存 本地存储 和 相册 权限
Future<bool> getPhotoPermission() async {
  if (Platform.isIOS) {
    var storageStatus = await Permission.storage.status;
    var photosStatus = await Permission.photos.status;
    if (storageStatus.isDenied || photosStatus.isDenied) {
      Map<Permission, PermissionStatus> statuses = await [
        Permission.storage,
        Permission.photos,
      ].request();
    }
    return storageStatus.isGranted && photosStatus.isGranted;
  } else {
    var storageStatus = await Permission.storage.status;
    var photosStatus = await Permission.photos.status;
    if (storageStatus.isDenied || photosStatus.isDenied) {
      Map<Permission, PermissionStatus> statuses = await [
        Permission.storage,
        Permission.photos,
      ].request();
    }
    return storageStatus.isGranted && photosStatus.isGranted;
  }
}

// 根据网络路径保存图片到相册
Future<void> saveImage(String imageUrl) async {
  final response = await http.get(Uri.parse(imageUrl));
  final bytes = response.bodyBytes;


  if (kIsWeb) {
    final imageData = Uint8List.fromList(bytes);
    final blob = html.Blob([imageData], 'image/jpeg');
    final url = html.Url.createObjectUrlFromBlob(blob);
    final anchor = html.AnchorElement(href: url);
    String timestamp = DateTime.now().millisecondsSinceEpoch.toString();
    anchor.download = 'image_$timestamp.jpg';
    anchor.click();
    html.Url.revokeObjectUrl(url);
  } else {
    if (Platform.isAndroid || Platform.isIOS) {
      bool permission = await getPhotoPermission();
      if (permission) {
        if (Platform.isIOS) {
          // 自动以时间戳命名
          final result = await ImageGallerySaver.saveImage(bytes);
          if (result != null) {
            showToast("保存成功");
          } else {
            print('error');
          }
        } else {
          //安卓
          // 自动以时间戳命名
          final result = await ImageGallerySaver.saveImage(bytes);
          if (result != null) {
            showToast("保存成功");
          } else {
            print('error');
          }
        }
      } else {
        //重新请求--第一次请求权限时,保存方法不会走,需要重新调一次
        saveImage(imageUrl);
      }
    } else {
      throw PlatformException(
        code: 'PLATFORM_NOT_SUPPORTED',
        message: 'Saving images is not supported on this platform.',
      );
    }
  }
}

到了这里,关于【Flutter】支持多平台 多端保存图片到本地相册 (兼容 Web端 移动端 android 保存到本地)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app 经验分享,从入门到离职(实战篇)——模拟从后台获取图片路径数据后授权相册以及保存图片到本地(手机相册)

    这篇文章是本专栏 uni-app 的项目实战篇,主要内容的是模拟前端通过调用接口,然后获取到数据图片的路径数据,然后授权相册,最后把图片保存到本地(相册)。 本专栏主要是分享和介绍从零到一学习和使用的 uni-app 的笔记和个人经验。通过个人的学习经验和工作经验来给

    2024年02月08日
    浏览(36)
  • uniapp开发微信小程序使用painter将页面转换为图片并保存到本地相册

    我使用到painter的原因是,在uniapp开发微信小程序时,需要将一个页面的内容转换成图片保存到本地相册。 起初在网上找到很多都是在 uniapp 中使用 html2canvas 将 网页转换成图片再 jspdf 将图片转换为pdf ,但是这种方式在小程序环境不支持,只在 h5 环境下适用, 当然这个方式是

    2024年02月12日
    浏览(34)
  • UE4实现截屏并保存到相册Android/iOS兼容

    通过Edit-Plugins-NewPlugin创建3个空的Plugin: MyNative插件,实现截屏功能,并提供对外调用的接口 MyNativeAndroid插件,实现Android端保存图片到相册功能 MyNativeIos插件,实现iOS端保存图片到相册功能 1.在MyNative.uplugin注册引用到2个插件MyNativeAndroid和MyNativeIos 2.在MyNative.Build.cs分平台引用

    2024年02月15日
    浏览(36)
  • uniapp 微信小程序保存图片到系统相册( 获取用户是否开启 授权保存图片到相册。)

    当用户点击拒绝按钮后的截图:   用户点击不授权  则关闭弹窗 单独给用户点击授权后, 跳转到授权页面  开启授权后:

    2024年02月08日
    浏览(41)
  • 微信小程序保存图片到相册 微信小程序实现将图片保存到手机相册(方案一)

    目录 微信小程序实现将图片保存到手机相册(方案一) 微信小程序实现将图片保存到手机相册(方案二) 微信小程序之点击复制文本到剪贴板 微信小程序---判断是IOS还是安卓 微信小程序分享图片给微信好友 首先我们需要调用wx.downloadFile方法下载文件资源到本地,然后利用

    2023年04月20日
    浏览(31)
  • 微信小程序保存图片到相册 微信小程序实现将图片保存到手机相册(方案一)

    目录 微信小程序实现将图片保存到手机相册(方案一) 微信小程序实现将图片保存到手机相册(方案二) 微信小程序之点击复制文本到剪贴板 微信小程序---判断是IOS还是安卓 微信小程序分享图片给微信好友 首先我们需要调用wx.downloadFile方法下载文件资源到本地,然后利用

    2023年04月20日
    浏览(41)
  • [小程序实现保存图片到相册]

    实现逻辑: 首先查看用户申请过的权限中是否有”保存图片到相册“,如果没有这个权限,则需要先申请权限(弹窗授权),如果用户同意授权则保存图片,如果用户不同意,则跳转到设置页,重新授权,然后再保存图片。 查看用户申请的全县有哪些 通过微信的API 获取用户

    2024年02月16日
    浏览(26)
  • uniapp-小程序保存图片到相册

    一. 将图片保存到手机相册涉及的 api 有以下几个 1. uni.getSetting (获取用户的当前设置) 2. uni.authorize (提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不

    2024年04月22日
    浏览(24)
  • Android开发 拍照+读取相册+保存到本地

    注册除了MainActivity的其他两个界面Albums和Camera,添加provider,申请使用相机的权限,读写权限 file_path.xml代码 如果虚拟机可以运行,手机不能安装,gradle.properties里面添加 文件结构 总结 https://wwzb.lanzoue.com/imUKH0n1nq4d 密码:1eda 分享Demo可试试效果 参考来源:  Android studio调用手机

    2024年02月05日
    浏览(39)
  • 小程序生成分享海报图片并保存相册

    最近开发的小程序都有分享需求,功能大体为点击分享按钮,或主动生成海报后,用户操作保存对应海报为图片实现分享。以下是具体实现。 最终生成效果如图: 此处主要是生成工具库来生成普通二维码,如果要生成小程序码,只能通过后台接口调用开放API实现,且需要小

    2024年02月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包