ScanImagePlugn.dart 1.99 KB
/*
 * @author lsy
 * @date   2019-09-09
 **/
import 'package:flutter/foundation.dart';
import 'package:flutter/src/services/platform_channel.dart';

Map<String, List<ScanImageItem>> changData(Map images) {
  Map<String, List<ScanImageItem>> newMap = new Map();
  images.forEach((k, v) {
    List<ScanImageItem> tempList = new List();
    for (var item in v) {
      ScanImageItem scanImageItem = new ScanImageItem();
      scanImageItem.path = item["path"] ?? "";
      scanImageItem.size = item["size"] ?? 0;
      scanImageItem.realPath = item["realPath"] ?? "";
      scanImageItem.isVideo = item["isVideo"] == "T" ? true : false;
      scanImageItem.during = item["during"] ?? "0";
      scanImageItem.dataToken =
          item["dataToken"] == null ? 0 : int.parse(item["dataToken"]);
      tempList.add(scanImageItem);
    }
    newMap.putIfAbsent(k, () => tempList);
  });
  return newMap;
}

class ScanImagePlugn {
  static Future<Map<String, List<ScanImageItem>>> scanImages(
      MethodChannel channel) async {
    var images = await channel.invokeMapMethod("scan_image_picker");
    return Future.value(compute(changData, images));
  }

  static Future<Map> nativeCamera(
      MethodChannel channel, String authority) async {
    return await channel
        .invokeMethod("native_camera", {"authority": authority});
  }

  static Future<bool> quitPage(MethodChannel channel) async {
    return await channel.invokeMethod("quit_page");
  }

  static Future<List> ios_album_path(
      MethodChannel channel, List<String> path) async {
    return await channel.invokeMethod("IOS_IMAGE_BY_PATH", path);
  }

  static Future<bool> playAlbumVideo(MethodChannel channel, String path) async {
    return await channel.invokeMethod("play_album_video", path);
  }

  static Future<bool> previewImage(MethodChannel channel, String path) async {
    return await channel.invokeMethod("PREVIEW_IMAGE", path);
  }
}

class ScanImageItem {
  String path;
  String realPath;
  String during;
  bool isVideo;
  int dataToken;
  int size;
}