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