From fa705507ba574c857b1667553737d23b1b7ff495 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 12 五月 2022 12:06:31 +0800
Subject: [PATCH] 后端模板代码优化

---
 src/main/resources/code/flutter_module/lib/utils/image_util.dart |  110 ++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 97 insertions(+), 13 deletions(-)

diff --git a/src/main/resources/code/flutter_module/lib/utils/image_util.dart b/src/main/resources/code/flutter_module/lib/utils/image_util.dart
index 0ca9722..cc81a62 100644
--- a/src/main/resources/code/flutter_module/lib/utils/image_util.dart
+++ b/src/main/resources/code/flutter_module/lib/utils/image_util.dart
@@ -1,23 +1,31 @@
 //鍥剧墖宸ュ叿
-import 'package:flutter/material.dart';
-import '../../utils/ui_constant.dart';
-import 'package:image_cropper/image_cropper.dart';
 import 'dart:io';
+
+import 'package:dio/dio.dart';
+import 'package:flutter/material.dart';
+import 'package:image_cropper/image_cropper.dart';
+import 'package:image_gallery_saver/image_gallery_saver.dart';
 import 'package:image_picker/image_picker.dart';
+import 'package:path_provider/path_provider.dart';
+import 'package:permission_handler/permission_handler.dart';
 
-class ImageUtil{
+import '../../utils/ui_constant.dart';
+import 'config_util.dart';
+import 'encrypt_util.dart';
+import 'permission_util.dart';
+import 'share_utils.dart';
+import 'ui_utils.dart';
 
+class ImageUtil {
   //閫夋嫨骞惰鍓浘鐗�
-  static Future<File?> selectAndCropImage() async{
+  static Future<File?> selectAndCropImage() async {
     final ImagePicker _picker = ImagePicker();
     final XFile? image = await _picker.pickImage(source: ImageSource.gallery);
-    ImageCropper cropper=ImageCropper();
+    ImageCropper cropper = ImageCropper();
     File? croppedFile = await cropper.cropImage(
-        cropStyle:CropStyle.circle,
+        cropStyle: CropStyle.circle,
         sourcePath: image!.path,
-        aspectRatioPresets: [
-          CropAspectRatioPreset.square
-        ],
+        aspectRatioPresets: [CropAspectRatioPreset.square],
         androidUiSettings: const AndroidUiSettings(
             toolbarTitle: 'Cropper',
             toolbarColor: ColorConstant.theme,
@@ -26,11 +34,87 @@
             lockAspectRatio: true),
         iosUiSettings: const IOSUiSettings(
           minimumAspectRatio: 1.0,
-        )
-    );
+        ));
     return croppedFile;
   }
 
+  //淇濆瓨鍥剧墖
+  static saveImg(String url, BuildContext context) {
+    Future<Directory?> dir;
+    if (Platform.isAndroid) {
+      dir = getExternalStorageDirectory();
+    } else {
+      dir = getApplicationDocumentsDirectory();
+    }
+    dir.then((value) {
+      if (value == null) {
+        ToastUtil.toast("鑾峰彇缂撳瓨鐩綍澶辫触", context);
+        return;
+      }
 
+      String doc = value.path;
+      String path = doc + "/" + EncryptUtil.MD5(url) + ".png";
+      _dowloadImg(url, path, context).then((value) {
+        if (value) {
+          ToastUtil.toast("淇濆瓨鎴愬姛", context);
+        }
+      });
+    });
+  }
 
-}
\ No newline at end of file
+  ///鍒嗕韩鍥剧墖
+  ///type: 1-寰俊  2-qq 3-鏂版氮
+  static shareImg(String url, int type, BuildContext context) {
+    getTemporaryDirectory().then((value) {
+      String path = value.path + "/" + EncryptUtil.MD5(url) + ".png";
+      _dowloadImg(url, path, context).then((value) {
+        if (value) {
+          //寮�濮嬪垎浜�
+          switch (type) {
+            case 0:
+              ShareUtil.shareImg(context, File(path), SharePlatform.all);
+              break;
+            case 1:
+              ShareUtil.shareImg(context, File(path), SharePlatform.wx);
+              break;
+            case 2:
+              ShareUtil.shareImg(context, File(path), SharePlatform.qq);
+              break;
+            case 3:
+              ShareUtil.shareImg(context, File(path), SharePlatform.sina);
+              break;
+          }
+        }
+      });
+    });
+  }
+
+  static Future<bool> _dowloadImg(
+      String url, String path, BuildContext context) async {
+    PermissionStatus status =
+        await PermissionUtil.openPermission(Permission.storage, force: true);
+    if (status != PermissionStatus.granted) {
+      return false;
+    }
+
+    //涓嬭浇鍥剧墖
+    Dio dio = Dio();
+    //璁剧疆杩炴帴瓒呮椂鏃堕棿
+    dio.options.connectTimeout = 20000;
+    //璁剧疆鏁版嵁鎺ユ敹瓒呮椂鏃堕棿
+    dio.options.receiveTimeout = 20000;
+    Response response;
+    try {
+      response = await dio.download(url, path);
+      if (response.statusCode == 200) {
+        await ImageGallerySaver.saveFile(path);
+        return true;
+      } else {
+        return false;
+      }
+    } catch (e) {
+      ToastUtil.toast("缃戠粶杩炴帴澶辫触", context);
+      return false;
+    }
+  }
+}

--
Gitblit v1.8.0