admin
2022-05-12 fa705507ba574c857b1667553737d23b1b7ff495
src/main/resources/code/flutter_module/lib/utils/jsinterface.dart
@@ -1,26 +1,16 @@
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;
@@ -69,12 +59,12 @@
              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;
          }
        }));
@@ -172,79 +162,4 @@
    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;
          }
        }
      });
    });
  }
}