image_gallery_saver ios获取下载路径

Posted 安果移不动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了image_gallery_saver ios获取下载路径相关的知识,希望对你有一定的参考价值。

答案是获取不到的需要再加一个插件去适配ios

 path_provider: ^2.0.1

可以先从pub.dev去看下集成文档 有些配置需要配置上去

 

配置好后代码如下


  Future<void> _save(String url, {bool share = false}) async {
    //取文件后缀
    String localPath = url.substring(0, url.indexOf("\\?"));
    //edcd6694de4555bda0ce1cf3ddd7c9ed.jpg
    localPath = localPath.substring(url.lastIndexOf("/") + 1);
    var response = await Dio()
        .get(url, options: Options(responseType: ResponseType.bytes));
    var android_result = null;
    File iosPath = null;
    var imageData = Uint8List.fromList(response.data);
    EasyLoading.show(status: '下载中,请稍后...', dismissOnTap: true);
    if (Platform.isAndroid) {
      // 如果是Android 的话,直接使用image_gallery_saver就可以了
      // 图片byte数据转化unit8

      // 调用image_gallery_saver的saveImages方法,返回值就是图片保存后的路径
      android_result = await ImageGallerySaver.saveImage(imageData,name:localPath.substring(0,localPath.indexOf(".")-1) );
      // 需要去除掉file://开头。生成要使用的file

    } else if (Platform.isIOS) {
      // 获取手机存储
      Directory applicationDir = await getApplicationDocumentsDirectory();
      // 判断路径是否存在
      bool isDirExist = await Directory(applicationDir.path).exists();
      if (!isDirExist) Directory(applicationDir.path).create();
      // 直接保存,返回的就是保存后的文件


      iosPath =
          await File(applicationDir.path + localPath).writeAsBytes(imageData);
    }
    //判断是否下载成功  下载成功可以执行分享逻辑
    if (Platform.isAndroid) {
      bool status = android_result['isSuccess'];
      if (status) {
        String filePath = android_result['filePath'];
        if (filePath != null) {
          filePath = filePath.replaceAll("file://", "");
        }
        SpUtil.putString(_downCacheKey, filePath);
        setState(() {
          _isDownloadPic = true;
          EasyLoading.showSuccess("下载成功");

          if (share) {
            Share.shareFiles([filePath],
                text: widget.avatarEmoticonsListsData.name);
          }
        });
      } else {
        String errorMessage = android_result['errorMessage'];
        EasyLoading.showError("下载失败,原因:$errorMessage");
      }
    } else if (Platform.isIOS) {
      if (iosPath != null) {
        if (iosPath.existsSync()) {
          SpUtil.putString(_downCacheKey, iosPath.path);
          setState(() {
            _isDownloadPic = true;
            EasyLoading.showSuccess("下载成功");
            if (share) {
              Share.shareFiles([iosPath.path],
                  text: widget.avatarEmoticonsListsData.name);
            }
          });
        }
      } else {
        EasyLoading.showError("保存失败。请授予保存照片权限");
      }
    }
  }

 

以上是关于image_gallery_saver ios获取下载路径的主要内容,如果未能解决你的问题,请参考以下文章

iOS 获取一个不变的UDID

iOS 从iCloud中获取文件

iOS ---------- 获取设备的各种信息

ios 怎样获取当前web的url

python获取ios亮屏

iOS 13后状态栏获取高度的方法