| | |
| | | import 'dart:convert'; |
| | | import 'dart:io'; |
| | | |
| | | import 'package:dio/dio.dart'; |
| | | import 'package:flutter/services.dart'; |
| | | import 'package:flutter/widgets.dart'; |
| | | import '../api/http.dart' as http; |
| | | import '../utils/encrypt_util.dart'; |
| | | import '../utils/permission_util.dart'; |
| | | import '../utils/share_utils.dart'; |
| | | import '../utils/string_util.dart'; |
| | | import '../utils/ui_constant.dart'; |
| | | import '../utils/ui_utils.dart'; |
| | | import '../utils/user_util.dart'; |
| | | import 'package:permission_handler/permission_handler.dart'; |
| | | import 'package:package_info/package_info.dart'; |
| | | import 'package:webview_flutter/platform_interface.dart'; |
| | | import 'package:webview_flutter/webview_flutter.dart'; |
| | | import 'package:path_provider/path_provider.dart'; |
| | | import '../ui/widget/nav.dart'; |
| | | import 'package:image_gallery_saver/image_gallery_saver.dart'; |
| | | |
| | | import 'config_util.dart'; |
| | | import 'package:package_info/package_info.dart'; |
| | | import '../api/http.dart' as http; |
| | | import '../ui/widget/nav.dart'; |
| | | import '../utils/ui_utils.dart'; |
| | | import '../utils/user_util.dart'; |
| | | import 'image_util.dart'; |
| | | |
| | | class JavascriptInterface { |
| | | final BuildContext context; |
| | |
| | | break; |
| | | case "saveImg": |
| | | String url = params["url"]; |
| | | saveImg(url); |
| | | ImageUtil.saveImg(url,context); |
| | | break; |
| | | case "shareImg": |
| | | String url = params["url"]; |
| | | String type = params["type"]; |
| | | shareImg(url, int.parse(type)); |
| | | ImageUtil.shareImg(url, int.parse(type),context); |
| | | break; |
| | | } |
| | | })); |
| | |
| | | popPage(context); |
| | | } |
| | | |
| | | Future<bool> _dowloadImg(String url, String path) 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; |
| | | } |
| | | } |
| | | |
| | | //保存图片 |
| | | saveImg(String url) { |
| | | 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).then((value) { |
| | | if (value) { |
| | | ToastUtil.toast("保存成功", context); |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | |
| | | ///分享图片 |
| | | ///type: 1-微信 2-qq 3-新浪 |
| | | shareImg(String url, int type) { |
| | | getTemporaryDirectory().then((value) { |
| | | String path = value.path + "/" + EncryptUtil.MD5(url) + ".png"; |
| | | _dowloadImg(url, path).then((value) { |
| | | if (value) { |
| | | //开始分享 |
| | | switch (type) { |
| | | 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; |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | } |
| | | } |