From 8519949eebc300af13968881ed5abfd72d201f39 Mon Sep 17 00:00:00 2001 From: Weller <1812208341@qq.com> Date: Tue, 13 Oct 2020 11:25:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=95=86=E5=93=81=E6=B5=B7?= =?UTF-8?q?=E6=8A=A5=E5=88=86=E4=BA=AB=EF=BC=8C=E5=A4=9A=E5=9B=BE=E5=88=86?= =?UTF-8?q?=E4=BA=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dart_tool/package_config.json | 4 +- .../goods_share_image/goods_share_image.dart | 2 +- lib/widgets/share/share_alert.dart | 100 +++++++++++------- 3 files changed, 66 insertions(+), 40 deletions(-) diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index 4393176..d967988 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -441,7 +441,7 @@ }, { "name": "shimmer", - "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shimmer-1.1.1", + "rootUri": "file:///Users/fnuser/.pub-cache/hosted/pub.flutter-io.cn/shimmer-1.1.2", "packageUri": "lib/", "languageVersion": "1.20" }, @@ -614,7 +614,7 @@ "languageVersion": "2.1" } ], - "generated": "2020-10-13T01:47:29.095085Z", + "generated": "2020-10-13T02:42:36.621853Z", "generator": "pub", "generatorVersion": "2.8.2" } diff --git a/lib/pages/goods_share_page/goods_share_image/goods_share_image.dart b/lib/pages/goods_share_page/goods_share_image/goods_share_image.dart index 4bbbe05..a2c3321 100644 --- a/lib/pages/goods_share_page/goods_share_image/goods_share_image.dart +++ b/lib/pages/goods_share_page/goods_share_image/goods_share_image.dart @@ -247,7 +247,7 @@ class _GoodsShareImageState extends State } void _saveImages() async { - _updateModel(); + await _updateModel(); List images = List(); for (int index = 0; index < _style.customImage.length; index++) { diff --git a/lib/widgets/share/share_alert.dart b/lib/widgets/share/share_alert.dart index ecccaf0..1ed768c 100644 --- a/lib/widgets/share/share_alert.dart +++ b/lib/widgets/share/share_alert.dart @@ -1,9 +1,11 @@ import 'dart:convert'; +import 'dart:io'; import 'dart:ui'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; +import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:share_extend/share_extend.dart'; import 'package:sharesdk_plugin/sharesdk_plugin.dart'; @@ -11,9 +13,6 @@ import 'package:zhiying_base_widget/utils/image_download_util/image_download_uti import 'package:zhiying_base_widget/widgets/share/models/share_data_model.dart'; import 'package:zhiying_base_widget/widgets/share/models/share_icon_model.dart'; import 'package:zhiying_comm/zhiying_comm.dart'; -// import 'package:image_gallery_saver/image_gallery_saver.dart'; - -import 'package:path_provider/path_provider.dart'; class ShareAlert extends StatelessWidget { final String skipIdentifier; @@ -67,10 +66,10 @@ class _ShareAlertContentState extends State<_ShareAlertContent> { void initState() { NetUtil.request('/api/v1/mod/${widget.skipIdentifier}', method: NetMethod.GET, onCache: (data) { - _parseData(data); - }, onSuccess: (data) { - _parseData(data); - }, onError: (err) {}); + _parseData(data); + }, onSuccess: (data) { + _parseData(data); + }, onError: (err) {}); super.initState(); } @@ -122,7 +121,7 @@ class _ShareAlertContentState extends State<_ShareAlertContent> { ), Container( margin: - EdgeInsets.only(left: 12, right: 12, top: 10, bottom: 10), + EdgeInsets.only(left: 12, right: 12, top: 10, bottom: 10), child: _createIcons(), ), GestureDetector( @@ -216,6 +215,7 @@ class _ShareAlertContentState extends State<_ShareAlertContent> { ); } + // mob分享,只能单图分享,多图分享调用系统分享 void _shareByMob(ShareSDKPlatform plateform) async { int count = 0; if (widget.model.poster != null) { @@ -238,37 +238,34 @@ class _ShareAlertContentState extends State<_ShareAlertContent> { Fluttertoast.showToast(msg: '暂无权限,分享失败'); return; } - // PermissionStatus status = await PermissionHandler().checkPermissionStatus( - // PermissionGroup.storage); - // if (PermissionStatus.granted != status) { - // PermissionHandler().requestPermissions([ - // PermissionGroup.storage, - // ]); - // } - // final result = await ImageGallerySaver.saveImage(widget.model.poster); + try { + // 保存到本地路径 + final tempDir = await getTemporaryDirectory(); + final file = await File('${tempDir.path}/image.jpg').create(); + file.writeAsBytesSync(widget.model.poster); - // var appDocDir = await getTemporaryDirectory(); - // final result = await ImageGallerySaver.saveImage( - // widget.model.poster, - // quality: 60, - // name: "hello"); - // Logger.debug(result); + Logger.debug(file.path); - // params = SSDKMap() - // ..setGeneral( - // widget.model.title, - // widget.model.content, - // widget.model.poster, - // null, - // null, - // widget.model.url, - // null, - // null, - // null, - // null, - // SSDKContentTypes.auto, - // ); + params = SSDKMap() + ..setGeneral( + widget.model.title, + widget.model.content, + file.path, + null, + null, + widget.model.url, + null, + null, + null, + null, + SSDKContentTypes.auto, + ); + } catch (err, s) { + Logger.error(err.toString(), s.toString()); + Fluttertoast.showToast(msg: '分享失败'); + return; + } } else { params = SSDKMap() ..setGeneral( @@ -304,7 +301,36 @@ class _ShareAlertContentState extends State<_ShareAlertContent> { // 多图分享,调用系统分享 void _shareMultipleImages() async { - List paths = await ImageDownloadUtil.download(widget.model.image); + List paths = List(); + if (widget.model.poster != null) { + // 检查并请求权限 + var status = await Permission.storage.status; + if (status != PermissionStatus.granted) { + status = await Permission.storage.request(); + } + if (status == PermissionStatus.denied) { + Fluttertoast.showToast(msg: '暂无权限,分享失败'); + return; + } + + try { + // 保存到本地路径 + final tempDir = await getTemporaryDirectory(); + final file = await File('${tempDir.path}/image.jpg').create(); + file.writeAsBytesSync(widget.model.poster); + + paths.add(file.path); + Logger.debug(file.path); + } catch (err, s) { + Logger.error(err.toString(), s.toString()); + Fluttertoast.showToast(msg: '分享失败'); + return; + } + } + + List downPaths = + await ImageDownloadUtil.download(widget.model.image); + paths.addAll(downPaths); ShareExtend.shareMultiple(paths, "image", subject: ""); } }