Pārlūkot izejas kodu

打包的测试与调整

liukai 8 mēneši atpakaļ
vecāks
revīzija
bb67de5f08
26 mainītis faili ar 586 papildinājumiem un 617 dzēšanām
  1. 2 2
      app/android/app/build.gradle
  2. 1 1
      app/android/key.properties
  3. BIN
      app/android/key/flutterroom.jks
  4. BIN
      app/android/key/yybusiness.jks
  5. 17 10
      app/ios/Runner.xcodeproj/project.pbxproj
  6. 1 1
      app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
  7. BIN
      app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LOGO@3x.png
  8. 0 22
      app/ios/Runner/Assets.xcassets/back.imageset/Contents.json
  9. BIN
      app/ios/Runner/Assets.xcassets/back.imageset/back 1.png
  10. BIN
      app/ios/Runner/Assets.xcassets/back.imageset/back.png
  11. 0 21
      app/ios/Runner/Assets.xcassets/check_image.imageset/Contents.json
  12. BIN
      app/ios/Runner/Assets.xcassets/check_image.imageset/check_image.png
  13. 0 21
      app/ios/Runner/Assets.xcassets/login_btn_normal.imageset/Contents.json
  14. BIN
      app/ios/Runner/Assets.xcassets/login_btn_normal.imageset/login_btn_normal.png
  15. 0 21
      app/ios/Runner/Assets.xcassets/uncheck_image.imageset/Contents.json
  16. BIN
      app/ios/Runner/Assets.xcassets/uncheck_image.imageset/uncheck_image.png
  17. 10 6
      app/ios/Runner/Base.lproj/LaunchScreen.storyboard
  18. 42 0
      app/ios/Runner/GradientView.swift
  19. 6 2
      app/ios/Runner/Info.plist
  20. 1 4
      packages/cpt_auth/lib/modules/main/main_page.dart
  21. 102 102
      packages/cs_plugin_platform/lib/engine/media/album_engine.dart
  22. 57 57
      packages/cs_plugin_platform/lib/engine/media/camera_engine.dart
  23. 43 43
      packages/cs_plugin_platform/lib/engine/media/image_crop_engine.dart
  24. 102 102
      packages/cs_plugin_platform/lib/engine/media/image_picker_utils.dart
  25. 199 199
      packages/cs_plugin_platform/lib/engine/permission/permission_engine.dart
  26. 3 3
      packages/cs_plugin_platform/pubspec.yaml

+ 2 - 2
app/android/app/build.gradle

@@ -49,7 +49,7 @@ android {
     defaultConfig {
         applicationId "com.hongyegroup.hotelbusiness"
         minSdkVersion 21
-        targetSdkVersion 33
+        targetSdkVersion 34
         versionCode 100          //Android打包上线记得要加固并重新签名再传
         versionName "1.0.0"
 
@@ -118,7 +118,7 @@ dependencies {
     implementation 'com.github.bumptech.glide:glide:4.11.0'
     kapt 'com.github.bumptech.glide:compiler:4.11.0'
 
+    implementation 'androidx.appcompat:appcompat:1.3.1'  //加入AndroidX依赖
     implementation 'com.android.support:multidex:1.0.3'
-
 //    implementation 'androidx.core:core-splashscreen:1.0.0' //启动12兼容
 }

+ 1 - 1
app/android/key.properties

@@ -1,4 +1,4 @@
-storeFile=../key/flutterroom.jks
+storeFile=../key/yybusiness.jks
 storePassword=123456
 keyAlias=guadou
 keyPassword=123456

BIN
app/android/key/flutterroom.jks


BIN
app/android/key/yybusiness.jks


+ 17 - 10
app/ios/Runner.xcodeproj/project.pbxproj

@@ -10,6 +10,7 @@
 		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
 		27DBCD0F7C9EBFC0F6BE4B99 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 170B930EF1FAA0602CCBFC69 /* Pods_Runner.framework */; };
 		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
+		4F73B2B32C36925F00950271 /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F73B2B22C36925F00950271 /* GradientView.swift */; };
 		74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
 		77F6D3242AE26F2C006D74CD /* AuthenticationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F6D3222AE26F25006D74CD /* AuthenticationServices.framework */; };
 		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
@@ -24,6 +25,7 @@
 		1BEC344927FDA4FD1E70B590 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; };
 		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
 		3E1E524A98C4C35F938991E4 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = "<group>"; };
+		4F73B2B22C36925F00950271 /* GradientView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GradientView.swift; sourceTree = "<group>"; };
 		74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = "<group>"; };
 		74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
 		776500082ABD7998008C323B /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
@@ -107,6 +109,7 @@
 				776500082ABD7998008C323B /* Runner.entitlements */,
 				97C146FA1CF9000F007C117D /* Main.storyboard */,
 				97C146FD1CF9000F007C117D /* Assets.xcassets */,
+				4F73B2B22C36925F00950271 /* GradientView.swift */,
 				97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */,
 				97C147021CF9000F007C117D /* Info.plist */,
 				1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */,
@@ -147,7 +150,7 @@
 		97C146E61CF9000F007C117D /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 1300;
+				LastUpgradeCheck = 1510;
 				ORGANIZATIONNAME = "";
 				TargetAttributes = {
 					97C146ED1CF9000F007C117D = {
@@ -268,6 +271,7 @@
 			files = (
 				74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */,
 				1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */,
+				4F73B2B32C36925F00950271 /* GradientView.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -351,16 +355,17 @@
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = CW4J9W8LB6;
+				DEVELOPMENT_TEAM = "";
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
+				INFOPLIST_KEY_CFBundleDisplayName = YYBusiness;
 				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 1.0.2;
-				PRODUCT_BUNDLE_IDENTIFIER = com.guadoutech.lehuoer;
+				MARKETING_VERSION = 1.0.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.hongyegroup.hotelbusiness;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
 				SUPPORTS_MACCATALYST = NO;
@@ -487,16 +492,17 @@
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = CW4J9W8LB6;
+				DEVELOPMENT_TEAM = "";
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
+				INFOPLIST_KEY_CFBundleDisplayName = YYBusiness;
 				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 1.0.2;
-				PRODUCT_BUNDLE_IDENTIFIER = com.guadoutech.lehuoer;
+				MARKETING_VERSION = 1.0.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.hongyegroup.hotelbusiness;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
 				SUPPORTS_MACCATALYST = NO;
@@ -517,16 +523,17 @@
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
 				CURRENT_PROJECT_VERSION = 1;
-				DEVELOPMENT_TEAM = CW4J9W8LB6;
+				DEVELOPMENT_TEAM = "";
 				ENABLE_BITCODE = NO;
 				INFOPLIST_FILE = Runner/Info.plist;
+				INFOPLIST_KEY_CFBundleDisplayName = YYBusiness;
 				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 1.0.2;
-				PRODUCT_BUNDLE_IDENTIFIER = com.guadoutech.lehuoer;
+				MARKETING_VERSION = 1.0.0;
+				PRODUCT_BUNDLE_IDENTIFIER = com.hongyegroup.hotelbusiness;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
 				SUPPORTS_MACCATALYST = NO;

+ 1 - 1
app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "1300"
+   LastUpgradeVersion = "1510"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "YES"

BIN
app/ios/Runner/Assets.xcassets/LaunchImage.imageset/LOGO@3x.png


+ 0 - 22
app/ios/Runner/Assets.xcassets/back.imageset/Contents.json

@@ -1,22 +0,0 @@
-{
-  "images" : [
-    {
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "filename" : "back.png",
-      "idiom" : "universal",
-      "scale" : "2x"
-    },
-    {
-      "filename" : "back 1.png",
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "author" : "xcode",
-    "version" : 1
-  }
-}

BIN
app/ios/Runner/Assets.xcassets/back.imageset/back 1.png


BIN
app/ios/Runner/Assets.xcassets/back.imageset/back.png


+ 0 - 21
app/ios/Runner/Assets.xcassets/check_image.imageset/Contents.json

@@ -1,21 +0,0 @@
-{
-  "images" : [
-    {
-      "filename" : "check_image.png",
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "author" : "xcode",
-    "version" : 1
-  }
-}

BIN
app/ios/Runner/Assets.xcassets/check_image.imageset/check_image.png


+ 0 - 21
app/ios/Runner/Assets.xcassets/login_btn_normal.imageset/Contents.json

@@ -1,21 +0,0 @@
-{
-  "images" : [
-    {
-      "filename" : "login_btn_normal.png",
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "author" : "xcode",
-    "version" : 1
-  }
-}

BIN
app/ios/Runner/Assets.xcassets/login_btn_normal.imageset/login_btn_normal.png


+ 0 - 21
app/ios/Runner/Assets.xcassets/uncheck_image.imageset/Contents.json

@@ -1,21 +0,0 @@
-{
-  "images" : [
-    {
-      "filename" : "uncheck_image.png",
-      "idiom" : "universal",
-      "scale" : "1x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "2x"
-    },
-    {
-      "idiom" : "universal",
-      "scale" : "3x"
-    }
-  ],
-  "info" : {
-    "author" : "xcode",
-    "version" : 1
-  }
-}

BIN
app/ios/Runner/Assets.xcassets/uncheck_image.imageset/uncheck_image.png


+ 10 - 6
app/ios/Runner/Base.lproj/LaunchScreen.storyboard

@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="22154" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
     <device id="retina6_12" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22130"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>
@@ -16,12 +17,12 @@
                         <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
-                                <rect key="frame" x="135" y="224" width="123" height="158"/>
+                            <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" misplaced="YES" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
+                                <rect key="frame" x="135" y="316" width="123" height="158"/>
                             </imageView>
                         </subviews>
                         <viewLayoutGuide key="safeArea" id="UaE-PJ-QZk"/>
-                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <color key="backgroundColor" systemColor="tertiaryLabelColor"/>
                         <constraints>
                             <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="UaE-PJ-QZk" secondAttribute="centerX" id="1a2-6s-vTC"/>
                             <constraint firstItem="YRO-k0-Ey4" firstAttribute="top" secondItem="UaE-PJ-QZk" secondAttribute="top" constant="165" id="96v-7G-RGG"/>
@@ -34,6 +35,9 @@
         </scene>
     </scenes>
     <resources>
-        <image name="LaunchImage" width="123" height="158"/>
+        <image name="LaunchImage" width="164.66667175292969" height="101"/>
+        <systemColor name="tertiaryLabelColor">
+            <color red="0.23529411764705882" green="0.23529411764705882" blue="0.2627450980392157" alpha="0.29803921568627451" colorSpace="custom" customColorSpace="sRGB"/>
+        </systemColor>
     </resources>
 </document>

+ 42 - 0
app/ios/Runner/GradientView.swift

@@ -0,0 +1,42 @@
+//
+//  GradientView.swift
+//  Runner
+//
+//  Created by liukai on 2024/7/4.
+//
+
+import UIKit
+
+class GradientView: UIView {
+    override func draw(_ rect: CGRect) {
+        guard let context = UIGraphicsGetCurrentContext() else { return }
+        
+        let colors = [UIColor(hex: "#091D44").cgColor, UIColor(hex: "#245A8A").cgColor, UIColor(hex: "#7F7CEC").cgColor]
+        let colorSpace = CGColorSpaceCreateDeviceRGB()
+        let colorLocations: [CGFloat] = [0.0, 0.5, 1.0]
+        
+        guard let gradient = CGGradient(colorsSpace: colorSpace, colors: colors as CFArray, locations: colorLocations) else { return }
+        
+        let startPoint = CGPoint.zero
+        let endPoint = CGPoint(x: 0, y: bounds.height)
+        
+        context.drawLinearGradient(gradient, start: startPoint, end: endPoint, options: [])
+    }
+}
+
+extension UIColor {
+    convenience init(hex: String) {
+        var hexSanitized = hex.trimmingCharacters(in: .whitespacesAndNewlines)
+        hexSanitized = hexSanitized.replacingOccurrences(of: "#", with: "")
+        
+        var rgb: UInt64 = 0
+        
+        Scanner(string: hexSanitized).scanHexInt64(&rgb)
+        
+        let red = CGFloat((rgb & 0xFF0000) >> 16) / 255.0
+        let green = CGFloat((rgb & 0x00FF00) >> 8) / 255.0
+        let blue = CGFloat(rgb & 0x0000FF) / 255.0
+        
+        self.init(red: red, green: green, blue: blue, alpha: 1.0)
+    }
+}

+ 6 - 2
app/ios/Runner/Info.plist

@@ -7,7 +7,7 @@
 	<key>CFBundleDevelopmentRegion</key>
 	<string>$(DEVELOPMENT_LANGUAGE)</string>
 	<key>CFBundleDisplayName</key>
-	<string>room</string>
+	<string>YYBusiness</string>
 	<key>CFBundleExecutable</key>
 	<string>$(EXECUTABLE_NAME)</string>
 	<key>CFBundleIdentifier</key>
@@ -80,21 +80,25 @@
 	<key>NSPhotoLibraryUsageDescription</key>
 	<string>“YYBusiness”想访问你的照片 用于图片上传,图片保存等功能,请允许我获取您的权限</string>
 	<key>NSUserTrackingUsageDescription</key>
-	<string>为了优化您的使用体验与确保账户安全,需要您允许room使用相关权限</string>
+	<string>为了优化您的使用体验与确保账户安全,需要您允许 YYBusiness 使用相关权限</string>
 	<key>UIApplicationSupportsIndirectInputEvents</key>
 	<true/>
 	<key>UIBackgroundModes</key>
 	<array>
 		<string>remote-notification</string>
 	</array>
+
 	<key>UILaunchStoryboardName</key>
 	<string>LaunchScreen</string>
+
 	<key>UIMainStoryboardFile</key>
 	<string>Main</string>
+
 	<key>UISupportedInterfaceOrientations</key>
 	<array>
 		<string>UIInterfaceOrientationPortrait</string>
 	</array>
+
 	<key>UIViewControllerBasedStatusBarAppearance</key>
 	<false/>
 </dict>

+ 1 - 4
packages/cpt_auth/lib/modules/main/main_page.dart

@@ -6,7 +6,6 @@ import 'package:plugin_basic/base/base_stateful_page.dart';
 import 'package:plugin_basic/base/base_state.dart';
 import 'package:plugin_basic/base/mixin_state_lifecycle.dart';
 import 'package:plugin_basic/utils/ext_get_nav.dart';
-import 'package:plugin_platform/engine/media/image_picker_utils.dart';
 import 'package:cs_resources/constants/color_constants.dart';
 import 'package:cs_resources/local/theme/theme_config.dart';
 import 'package:plugin_platform/engine/toast/toast_engine.dart';
@@ -149,9 +148,7 @@ class _MainPageState extends BaseState<MainPage, MainController> with StateLifec
                   ).center().marginOnly(top: 10),
                   MyButton(
                     onPressed: () {
-                      ImagePickerUtils().show((filePath) {
-                        ToastEngine.show("图片路径:$filePath");
-                      });
+
                     },
                     text: "申请多媒体权限,进入相册选择",
                     minWidth: 150,

+ 102 - 102
packages/cs_plugin_platform/lib/engine/media/album_engine.dart

@@ -1,102 +1,102 @@
-import 'package:flutter/material.dart';
-import 'package:flutter/services.dart';
-import 'package:get/get.dart';
-import 'package:wechat_assets_picker/wechat_assets_picker.dart';
-
-/*
- * 本地图库的引擎封装,目前用的 wechat_assets_picker 插件
- */
-class AlbumEngine {
-  /// 选择图片
-  static Future<List<AssetEntity>?> selectImage(
-    BuildContext context, {
-    int maxAssets = 9,
-    List<AssetEntity>? selected,
-    int filterMinWidth = 100,
-    int filterMaxWidth = 100000,
-    int filterMinHeight = 100,
-    int filterMaxHeight = 100000,
-  }) async {
-    FilterOptionGroup filterOptions = FilterOptionGroup()
-      ..setOption(
-        AssetType.image,
-        FilterOption(
-          sizeConstraint: SizeConstraint(
-            minWidth: filterMinWidth,
-            maxWidth: filterMaxWidth,
-            minHeight: filterMinHeight,
-            maxHeight: filterMaxHeight,
-          ),
-        ),
-      );
-
-    return AssetPicker.pickAssets(
-      context,
-      pickerConfig: AssetPickerConfig(
-        requestType: RequestType.image,
-        selectedAssets: selected,
-        maxAssets: maxAssets,
-        filterOptions: filterOptions,
-        gridCount: 4,
-        pageSize: 40,
-        pickerTheme: ThemeData(
-          brightness: Brightness.dark,
-          appBarTheme: AppBarTheme(
-            systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
-                    statusBarColor: Colors.transparent,
-                    statusBarBrightness: Brightness.dark,
-                    statusBarIconBrightness: Brightness.light,
-                  ),
-          ),
-        ),
-      ),
-    );
-  }
-
-  /// 选择视频
-  static Future<List<AssetEntity>?> selectVideo(
-    BuildContext context, {
-    int maxAssets = 1,
-    List<AssetEntity>? selected,
-    int filterMinWidth = 100,
-    int filterMaxWidth = 100000,
-    int filterMinHeight = 100,
-    int filterMaxHeight = 100000,
-    int filterMaxSeconds = 60, //默认能选择60秒以内的视频
-  }) async {
-    FilterOptionGroup filterOptions = FilterOptionGroup()
-      ..setOption(
-        AssetType.video,
-        FilterOption(
-            sizeConstraint: SizeConstraint(
-              minWidth: filterMinWidth,
-              maxWidth: filterMaxWidth,
-              minHeight: filterMinHeight,
-              maxHeight: filterMaxHeight,
-            ),
-            durationConstraint: DurationConstraint(max: Duration(seconds: filterMaxSeconds))),
-      );
-
-    return AssetPicker.pickAssets(
-      context,
-      pickerConfig: AssetPickerConfig(
-        requestType: RequestType.video,
-        selectedAssets: selected,
-        maxAssets: maxAssets,
-        filterOptions: filterOptions,
-        gridCount: 4,
-        pageSize: 40,
-        pickerTheme: ThemeData(
-          brightness: Brightness.dark,
-          appBarTheme: AppBarTheme(
-            systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
-              statusBarColor: Colors.transparent,
-              statusBarBrightness: Brightness.dark,
-              statusBarIconBrightness: Brightness.light,
-            ),
-          ),
-        ),
-      ),
-    );
-  }
-}
+// import 'package:flutter/material.dart';
+// import 'package:flutter/services.dart';
+// import 'package:get/get.dart';
+// import 'package:wechat_assets_picker/wechat_assets_picker.dart';
+//
+// /*
+//  * 本地图库的引擎封装,目前用的 wechat_assets_picker 插件
+//  */
+// class AlbumEngine {
+//   /// 选择图片
+//   static Future<List<AssetEntity>?> selectImage(
+//     BuildContext context, {
+//     int maxAssets = 9,
+//     List<AssetEntity>? selected,
+//     int filterMinWidth = 100,
+//     int filterMaxWidth = 100000,
+//     int filterMinHeight = 100,
+//     int filterMaxHeight = 100000,
+//   }) async {
+//     FilterOptionGroup filterOptions = FilterOptionGroup()
+//       ..setOption(
+//         AssetType.image,
+//         FilterOption(
+//           sizeConstraint: SizeConstraint(
+//             minWidth: filterMinWidth,
+//             maxWidth: filterMaxWidth,
+//             minHeight: filterMinHeight,
+//             maxHeight: filterMaxHeight,
+//           ),
+//         ),
+//       );
+//
+//     return AssetPicker.pickAssets(
+//       context,
+//       pickerConfig: AssetPickerConfig(
+//         requestType: RequestType.image,
+//         selectedAssets: selected,
+//         maxAssets: maxAssets,
+//         filterOptions: filterOptions,
+//         gridCount: 4,
+//         pageSize: 40,
+//         pickerTheme: ThemeData(
+//           brightness: Brightness.dark,
+//           appBarTheme: AppBarTheme(
+//             systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
+//                     statusBarColor: Colors.transparent,
+//                     statusBarBrightness: Brightness.dark,
+//                     statusBarIconBrightness: Brightness.light,
+//                   ),
+//           ),
+//         ),
+//       ),
+//     );
+//   }
+//
+//   /// 选择视频
+//   static Future<List<AssetEntity>?> selectVideo(
+//     BuildContext context, {
+//     int maxAssets = 1,
+//     List<AssetEntity>? selected,
+//     int filterMinWidth = 100,
+//     int filterMaxWidth = 100000,
+//     int filterMinHeight = 100,
+//     int filterMaxHeight = 100000,
+//     int filterMaxSeconds = 60, //默认能选择60秒以内的视频
+//   }) async {
+//     FilterOptionGroup filterOptions = FilterOptionGroup()
+//       ..setOption(
+//         AssetType.video,
+//         FilterOption(
+//             sizeConstraint: SizeConstraint(
+//               minWidth: filterMinWidth,
+//               maxWidth: filterMaxWidth,
+//               minHeight: filterMinHeight,
+//               maxHeight: filterMaxHeight,
+//             ),
+//             durationConstraint: DurationConstraint(max: Duration(seconds: filterMaxSeconds))),
+//       );
+//
+//     return AssetPicker.pickAssets(
+//       context,
+//       pickerConfig: AssetPickerConfig(
+//         requestType: RequestType.video,
+//         selectedAssets: selected,
+//         maxAssets: maxAssets,
+//         filterOptions: filterOptions,
+//         gridCount: 4,
+//         pageSize: 40,
+//         pickerTheme: ThemeData(
+//           brightness: Brightness.dark,
+//           appBarTheme: AppBarTheme(
+//             systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
+//               statusBarColor: Colors.transparent,
+//               statusBarBrightness: Brightness.dark,
+//               statusBarIconBrightness: Brightness.light,
+//             ),
+//           ),
+//         ),
+//       ),
+//     );
+//   }
+// }

+ 57 - 57
packages/cs_plugin_platform/lib/engine/media/camera_engine.dart

@@ -1,57 +1,57 @@
-import 'package:flutter/material.dart';
-import 'package:wechat_camera_picker/wechat_camera_picker.dart';
-import 'package:flutter/services.dart';
-import 'package:get/get.dart';
-
-/*
- * 照相机的引擎封装,目前用的 CameraPicker 插件
- */
-class CameraEngine {
-  /// 拍照
-  static Future<AssetEntity?> takePhoto(BuildContext context) async {
-    return await CameraPicker.pickFromCamera(
-      context,
-      pickerConfig: CameraPickerConfig(
-        enableRecording: false,
-        theme: ThemeData(
-          brightness: Brightness.dark,
-          appBarTheme: AppBarTheme(
-            systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
-              statusBarColor: Colors.transparent,
-              statusBarBrightness: Brightness.dark,
-              statusBarIconBrightness: Brightness.light,
-            ),
-          ),
-        ),
-      ),
-    );
-  }
-
-  /// 录制视频
-  static Future<AssetEntity?> takeVideo(
-    BuildContext context, {
-    int maxRecordInSeconds = 30,
-  }) async {
-    return await CameraPicker.pickFromCamera(
-      context,
-      pickerConfig: CameraPickerConfig(
-        enableRecording: true,
-        onlyEnableRecording: true,
-        enableTapRecording: false,
-        enableAudio: true,
-        shouldAutoPreviewVideo: true,
-        maximumRecordingDuration: Duration(seconds: maxRecordInSeconds),
-        theme: ThemeData(
-          brightness: Brightness.dark,
-          appBarTheme: AppBarTheme(
-            systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
-              statusBarColor: Colors.transparent,
-              statusBarBrightness: Brightness.dark,
-              statusBarIconBrightness: Brightness.light,
-            ),
-          ),
-        ),
-      ),
-    );
-  }
-}
+// import 'package:flutter/material.dart';
+// import 'package:wechat_camera_picker/wechat_camera_picker.dart';
+// import 'package:flutter/services.dart';
+// import 'package:get/get.dart';
+//
+// /*
+//  * 照相机的引擎封装,目前用的 CameraPicker 插件
+//  */
+// class CameraEngine {
+//   /// 拍照
+//   static Future<AssetEntity?> takePhoto(BuildContext context) async {
+//     return await CameraPicker.pickFromCamera(
+//       context,
+//       pickerConfig: CameraPickerConfig(
+//         enableRecording: false,
+//         theme: ThemeData(
+//           brightness: Brightness.dark,
+//           appBarTheme: AppBarTheme(
+//             systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
+//               statusBarColor: Colors.transparent,
+//               statusBarBrightness: Brightness.dark,
+//               statusBarIconBrightness: Brightness.light,
+//             ),
+//           ),
+//         ),
+//       ),
+//     );
+//   }
+//
+//   /// 录制视频
+//   static Future<AssetEntity?> takeVideo(
+//     BuildContext context, {
+//     int maxRecordInSeconds = 30,
+//   }) async {
+//     return await CameraPicker.pickFromCamera(
+//       context,
+//       pickerConfig: CameraPickerConfig(
+//         enableRecording: true,
+//         onlyEnableRecording: true,
+//         enableTapRecording: false,
+//         enableAudio: true,
+//         shouldAutoPreviewVideo: true,
+//         maximumRecordingDuration: Duration(seconds: maxRecordInSeconds),
+//         theme: ThemeData(
+//           brightness: Brightness.dark,
+//           appBarTheme: AppBarTheme(
+//             systemOverlayStyle: SystemUiOverlayStyle.dark.copyWith(
+//               statusBarColor: Colors.transparent,
+//               statusBarBrightness: Brightness.dark,
+//               statusBarIconBrightness: Brightness.light,
+//             ),
+//           ),
+//         ),
+//       ),
+//     );
+//   }
+// }

+ 43 - 43
packages/cs_plugin_platform/lib/engine/media/image_crop_engine.dart

@@ -1,43 +1,43 @@
-import 'package:flutter/material.dart';
-
-import 'package:get/get.dart';
-import 'package:image_cropper/image_cropper.dart';
-
-/*
- * 图片裁剪引擎封装,目前使用的是 UCorp 框架
- */
-class ImageCropEngine {
-  /// 开启图片裁剪 - 返回裁剪后的图片的路径 (默认裁剪后的路径在App/Data/Cache目录下)
-  static Future<String?> imageCrop(
-    BuildContext context,
-    String filePath, {
-    CropAspectRatioPreset aspect = CropAspectRatioPreset.square,
-  }) async {
-    CroppedFile? croppedFile = await ImageCropper().cropImage(
-      sourcePath: filePath,
-      aspectRatioPresets: [
-        aspect,
-      ],
-      uiSettings: [
-        AndroidUiSettings(
-            toolbarTitle: '图片裁剪'.tr,
-            toolbarColor: const Color(0xff212121),
-            statusBarColor: const Color(0xff212121),
-            toolbarWidgetColor: Colors.white,
-            initAspectRatio: CropAspectRatioPreset.original,
-            lockAspectRatio: false),
-        IOSUiSettings(
-          title: '图片裁剪'.tr,
-        ),
-        WebUiSettings(
-          context: context,
-        ),
-      ],
-    );
-
-    if (croppedFile != null) {
-      return croppedFile.path;
-    }
-    return null;
-  }
-}
+// import 'package:flutter/material.dart';
+//
+// import 'package:get/get.dart';
+// import 'package:image_cropper/image_cropper.dart';
+//
+// /*
+//  * 图片裁剪引擎封装,目前使用的是 UCorp 框架
+//  */
+// class ImageCropEngine {
+//   /// 开启图片裁剪 - 返回裁剪后的图片的路径 (默认裁剪后的路径在App/Data/Cache目录下)
+//   static Future<String?> imageCrop(
+//     BuildContext context,
+//     String filePath, {
+//     CropAspectRatioPreset aspect = CropAspectRatioPreset.square,
+//   }) async {
+//     CroppedFile? croppedFile = await ImageCropper().cropImage(
+//       sourcePath: filePath,
+//       aspectRatioPresets: [
+//         aspect,
+//       ],
+//       uiSettings: [
+//         AndroidUiSettings(
+//             toolbarTitle: '图片裁剪'.tr,
+//             toolbarColor: const Color(0xff212121),
+//             statusBarColor: const Color(0xff212121),
+//             toolbarWidgetColor: Colors.white,
+//             initAspectRatio: CropAspectRatioPreset.original,
+//             lockAspectRatio: false),
+//         IOSUiSettings(
+//           title: '图片裁剪'.tr,
+//         ),
+//         WebUiSettings(
+//           context: context,
+//         ),
+//       ],
+//     );
+//
+//     if (croppedFile != null) {
+//       return croppedFile.path;
+//     }
+//     return null;
+//   }
+// }

+ 102 - 102
packages/cs_plugin_platform/lib/engine/media/image_picker_utils.dart

@@ -1,102 +1,102 @@
-import 'package:flutter/material.dart';
-import 'package:get/get.dart';
-import 'package:image_cropper/image_cropper.dart';
-import 'package:wechat_assets_picker/wechat_assets_picker.dart';
-import 'package:widgets/dialog/album_default_select_dialog.dart';
-
-import '../permission/permission_engine.dart';
-import 'album_engine.dart';
-import 'camera_engine.dart';
-import '../dialog/dialog_engine.dart';
-import 'image_crop_engine.dart';
-
-
-/*
-    相机相册选择的封装
-
-    1.相机相册的选择弹框
-    2.相机相册权限提示详情描述弹窗
-    3.调用相机相册的引擎封装类 CameraEngine  AlbumEngine  ImageCropEngine 的使用
- */
-class ImagePickerUtils {
-  // 私有构造函数
-  ImagePickerUtils._privateConstructor();
-
-  // 单例实例
-  static final ImagePickerUtils _instance = ImagePickerUtils._privateConstructor();
-
-  // 获取单例实例的访问点
-  factory ImagePickerUtils() {
-    return _instance;
-  }
-
-  /// 入口
-  void show(
-    void Function(String filePath) complete, {
-    bool isCropped = false,
-    CropAspectRatioPreset aspect = CropAspectRatioPreset.square,
-  }) {
-    DialogEngine.show(
-        position: DialogPosition.bottom,
-        widget: AlbumDefaultSelectDialog(cameraAction: () {
-          //相机的选项
-          PermissionEngine().requestCameraPermission(() {
-            //调用相机引擎读取图片
-            _selectFormCamera(Get.context!, (filePath) {
-              complete(filePath);
-            }, isCropped: isCropped, aspect: aspect);
-          });
-        }, albumAction: () {
-          //相册的选项
-          PermissionEngine().requestPhotosPermission(() {
-            //调用相册引擎读取图片
-            _selectFormAlbum(Get.context!, (filePath) {
-              complete(filePath);
-            }, isCropped: isCropped, aspect: aspect);
-          });
-        }));
-  }
-
-  /// 从相机中选择
-  Future _selectFormCamera(
-    BuildContext context,
-    void Function(String filePath) complete, {
-    bool isCropped = false,
-    CropAspectRatioPreset aspect = CropAspectRatioPreset.square,
-  }) async {
-    final AssetEntity? result = await CameraEngine.takePhoto(context);
-
-    if (result != null) {
-      final file = await result.file;
-      final filePath = file?.path;
-
-      if (filePath != null && isCropped == true) {
-        final croppedPath = await ImageCropEngine.imageCrop(context, filePath, aspect: aspect);
-        complete(croppedPath!);
-      } else {
-        complete(filePath!);
-      }
-    }
-  }
-
-  /// 从相册中选择
-  Future _selectFormAlbum(
-    BuildContext context,
-    void Function(String filePath) complete, {
-    bool isCropped = false,
-    CropAspectRatioPreset aspect = CropAspectRatioPreset.square,
-  }) async {
-    final List<AssetEntity>? result = await AlbumEngine.selectImage(context, maxAssets: 1);
-    if (result != null && result.isNotEmpty) {
-      final file = await result[0].file;
-      final filePath = file?.path;
-
-      if (filePath != null && isCropped == true) {
-        final croppedPath = await ImageCropEngine.imageCrop(context, filePath, aspect: aspect);
-        complete(croppedPath!);
-      } else {
-        complete(filePath!);
-      }
-    }
-  }
-}
+// import 'package:flutter/material.dart';
+// import 'package:get/get.dart';
+// import 'package:image_cropper/image_cropper.dart';
+// import 'package:wechat_assets_picker/wechat_assets_picker.dart';
+// import 'package:widgets/dialog/album_default_select_dialog.dart';
+//
+// import '../permission/permission_engine.dart';
+// import 'album_engine.dart';
+// import 'camera_engine.dart';
+// import '../dialog/dialog_engine.dart';
+// import 'image_crop_engine.dart';
+//
+//
+// /*
+//     相机相册选择的封装
+//
+//     1.相机相册的选择弹框
+//     2.相机相册权限提示详情描述弹窗
+//     3.调用相机相册的引擎封装类 CameraEngine  AlbumEngine  ImageCropEngine 的使用
+//  */
+// class ImagePickerUtils {
+//   // 私有构造函数
+//   ImagePickerUtils._privateConstructor();
+//
+//   // 单例实例
+//   static final ImagePickerUtils _instance = ImagePickerUtils._privateConstructor();
+//
+//   // 获取单例实例的访问点
+//   factory ImagePickerUtils() {
+//     return _instance;
+//   }
+//
+//   /// 入口
+//   void show(
+//     void Function(String filePath) complete, {
+//     bool isCropped = false,
+//     CropAspectRatioPreset aspect = CropAspectRatioPreset.square,
+//   }) {
+//     DialogEngine.show(
+//         position: DialogPosition.bottom,
+//         widget: AlbumDefaultSelectDialog(cameraAction: () {
+//           //相机的选项
+//           PermissionEngine().requestCameraPermission(() {
+//             //调用相机引擎读取图片
+//             _selectFormCamera(Get.context!, (filePath) {
+//               complete(filePath);
+//             }, isCropped: isCropped, aspect: aspect);
+//           });
+//         }, albumAction: () {
+//           //相册的选项
+//           PermissionEngine().requestPhotosPermission(() {
+//             //调用相册引擎读取图片
+//             _selectFormAlbum(Get.context!, (filePath) {
+//               complete(filePath);
+//             }, isCropped: isCropped, aspect: aspect);
+//           });
+//         }));
+//   }
+//
+//   /// 从相机中选择
+//   Future _selectFormCamera(
+//     BuildContext context,
+//     void Function(String filePath) complete, {
+//     bool isCropped = false,
+//     CropAspectRatioPreset aspect = CropAspectRatioPreset.square,
+//   }) async {
+//     final AssetEntity? result = await CameraEngine.takePhoto(context);
+//
+//     if (result != null) {
+//       final file = await result.file;
+//       final filePath = file?.path;
+//
+//       if (filePath != null && isCropped == true) {
+//         final croppedPath = await ImageCropEngine.imageCrop(context, filePath, aspect: aspect);
+//         complete(croppedPath!);
+//       } else {
+//         complete(filePath!);
+//       }
+//     }
+//   }
+//
+//   /// 从相册中选择
+//   Future _selectFormAlbum(
+//     BuildContext context,
+//     void Function(String filePath) complete, {
+//     bool isCropped = false,
+//     CropAspectRatioPreset aspect = CropAspectRatioPreset.square,
+//   }) async {
+//     final List<AssetEntity>? result = await AlbumEngine.selectImage(context, maxAssets: 1);
+//     if (result != null && result.isNotEmpty) {
+//       final file = await result[0].file;
+//       final filePath = file?.path;
+//
+//       if (filePath != null && isCropped == true) {
+//         final croppedPath = await ImageCropEngine.imageCrop(context, filePath, aspect: aspect);
+//         complete(croppedPath!);
+//       } else {
+//         complete(filePath!);
+//       }
+//     }
+//   }
+// }

+ 199 - 199
packages/cs_plugin_platform/lib/engine/permission/permission_engine.dart

@@ -1,199 +1,199 @@
-
-import 'package:flutter/material.dart';
-import 'package:permission_handler/permission_handler.dart';
-import 'package:photo_manager/photo_manager.dart';
-import 'package:shared/utils/device_utils.dart';
-import 'package:shared/utils/log_utils.dart';
-import 'package:widgets/dialog/app_default_dialog.dart';
-import 'package:widgets/dialog/permission_desc_dialog.dart';
-
-import '../dialog/dialog_engine.dart';
-
-
-/**
- * 动态权限的申请与校验
- */
-class PermissionEngine {
-  // 私有构造函数
-  PermissionEngine._privateConstructor();
-
-  // 单例实例
-  static final PermissionEngine _instance = PermissionEngine._privateConstructor();
-
-  // 获取单例实例的访问点
-  factory PermissionEngine() {
-    return _instance;
-  }
-
-  /// 申请多媒体相册权限
-  void requestPhotosPermission(void Function() success) async {
-    //相册的选项
-    if (DeviceUtils.isIOS) {
-      //申请授权
-      final value = await PhotoManager.requestPermissionExtend();
-      if (value.hasAccess) {
-        //已授权
-        Log.d("相册已授权");
-        success();
-      } else if (value == PermissionState.limited) {
-        Log.d("相册访问受限,去设置受限");
-        PhotoManager.presentLimited();
-      } else {
-        Log.d("相册无授权,去设置");
-        DialogEngine.show(
-          widget: AppDefaultDialog(
-            "无相册权限,前往设置",
-            confirmAction: () {
-              PhotoManager.openSetting();
-            },
-          ),
-        );
-      }
-    } else {
-      //Android是否有SD卡权限
-      var status = await Permission.storage.status;
-      late PermissionState ps;
-      if (status.isGranted) {
-        // 已经授权
-        success();
-      } else {
-        // 未授权,则准备发起一次申请
-        var permissionRequestFuture = PhotoManager.requestPermissionExtend();
-
-        // 延迟500毫秒的Future
-        var delayFuture = Future.delayed(Duration(milliseconds: 500), () => 'delay');
-
-        // 使用Future.any等待上述两个Future中的任何一个完成
-        var firstCompleted = await Future.any([permissionRequestFuture, delayFuture]);
-
-        // 判断响应结果
-        if (firstCompleted == 'delay') {
-          Log.d("判断响应结果:1");
-          // 如果是延迟Future完成了,表示500毫秒内没有获得权限响应,显示对话框
-          _showPermissionDialog("“YYBusiness”想访问你的多媒体相册 用于图片上传,图片保存等功能,请允许我获取您的权限");
-          // 再次等待权限请求结果
-          ps = await permissionRequestFuture;
-          DialogEngine.dismiss(tag: "permission");
-        } else {
-          Log.d("判断响应结果:2");
-          // 权限请求已完成,立刻取消对话框展示(如果已经展示的话)
-          DialogEngine.dismiss(tag: "permission");
-          ps = firstCompleted as PermissionState;
-        }
-
-        if (ps.isAuth) {
-          // 用户授权
-          success();
-        } else {
-          // 权限被拒绝
-          await DialogEngine.show(
-            widget: AppDefaultDialog("请到您的手机设置打开相册的权限", title: "提醒", confirmText: "去设置", confirmAction: () {
-              openAppSettings();
-            }),
-          );
-        }
-      }
-    }
-  }
-
-  /// 申请相机权限
-  void requestCameraPermission(void Function() success) async {
-    // 获取当前的权限
-    var status = await Permission.camera.status;
-    if (status.isGranted) {
-      // 已经授权
-      success();
-    } else {
-      // 未授权,则准备发起一次申请
-      var permissionRequestFuture = Permission.camera.request();
-
-      // 延迟500毫秒的Future
-      var delayFuture = Future.delayed(Duration(milliseconds: 500), () => 'delay');
-
-      // 使用Future.any等待上述两个Future中的任何一个完成
-      var firstCompleted = await Future.any([permissionRequestFuture, delayFuture]);
-
-      // 判断响应结果
-      if (firstCompleted == 'delay') {
-        // 如果是延迟Future完成了,表示500毫秒内没有获得权限响应,显示对话框
-        _showPermissionDialog("“YYBusiness”申请调用您的相机权限 用于使用拍摄头像,图片上传保存等功能,请允许我获取您的权限");
-        // 再次等待权限请求结果
-        status = await permissionRequestFuture;
-        DialogEngine.dismiss(tag: "permission");
-      } else {
-        // 权限请求已完成,立刻取消对话框展示(如果已经展示的话)
-        DialogEngine.dismiss(tag: "permission");
-        status = firstCompleted as PermissionStatus;
-      }
-
-      if (status.isGranted) {
-        // 用户授权
-        success();
-      } else {
-        // 权限被拒绝
-        await DialogEngine.show(
-          widget: AppDefaultDialog("请到您的手机设置打开相机的权限", title: "提醒", confirmText: "去设置", confirmAction: () {
-            openAppSettings();
-          }),
-        );
-      }
-    }
-  }
-
-  /// 校验并申请定位权限
-  Future<bool> requestLocationPermission() async {
-    // 获取当前的权限
-    var status = await Permission.location.status;
-    if (status.isGranted) {
-      // 已经授权
-      return true;
-    } else {
-      // 未授权,则准备发起一次申请
-      var permissionRequestFuture = Permission.location.request();
-
-      // 延迟500毫秒的Future
-      var delayFuture = Future.delayed(Duration(milliseconds: 500), () => 'delay');
-
-      // 使用Future.any等待上述两个Future中的任何一个完成
-      var firstCompleted = await Future.any([permissionRequestFuture, delayFuture]);
-
-      // 判断响应结果
-      if (firstCompleted == 'delay') {
-        // 如果是延迟Future完成了,表示500毫秒内没有获得权限响应,显示对话框
-        _showPermissionDialog("“YYBusiness”想访问您的定位权限获取您的位置来推荐附近的工作");
-        // 再次等待权限请求结果
-        status = await permissionRequestFuture;
-        DialogEngine.dismiss(tag: "permission");
-      } else {
-        Log.d("权限请求已完成,立刻取消对话框展示");
-        // 权限请求已完成,立刻取消对话框展示(如果已经展示的话)
-        DialogEngine.dismiss(tag: "permission");
-        status = firstCompleted as PermissionStatus;
-      }
-
-      if (status.isGranted) {
-        // 用户授权
-        return true;
-      } else {
-        // 权限被拒绝
-        await DialogEngine.show(
-          widget: AppDefaultDialog("请到您的手机设置打开定位的权限", title: "提醒", confirmText: "去设置", confirmAction: () {
-            openAppSettings();
-          }),
-        );
-        return false;
-      }
-    }
-  }
-
-  //顶部展示权限声明详情弹窗
-  void _showPermissionDialog(String desc) {
-    DialogEngine.show(
-      clickMaskDismiss: false,
-      backDismiss: true,
-      tag: "permission",
-      maskColor: Colors.transparent,
-      widget: PermissionDescDialog(desc),
-    );
-  }
-}
+//
+// import 'package:flutter/material.dart';
+// import 'package:permission_handler/permission_handler.dart';
+// import 'package:photo_manager/photo_manager.dart';
+// import 'package:shared/utils/device_utils.dart';
+// import 'package:shared/utils/log_utils.dart';
+// import 'package:widgets/dialog/app_default_dialog.dart';
+// import 'package:widgets/dialog/permission_desc_dialog.dart';
+//
+// import '../dialog/dialog_engine.dart';
+//
+//
+// /**
+//  * 动态权限的申请与校验
+//  */
+// class PermissionEngine {
+//   // 私有构造函数
+//   PermissionEngine._privateConstructor();
+//
+//   // 单例实例
+//   static final PermissionEngine _instance = PermissionEngine._privateConstructor();
+//
+//   // 获取单例实例的访问点
+//   factory PermissionEngine() {
+//     return _instance;
+//   }
+//
+//   /// 申请多媒体相册权限
+//   void requestPhotosPermission(void Function() success) async {
+//     //相册的选项
+//     if (DeviceUtils.isIOS) {
+//       //申请授权
+//       final value = await PhotoManager.requestPermissionExtend();
+//       if (value.hasAccess) {
+//         //已授权
+//         Log.d("相册已授权");
+//         success();
+//       } else if (value == PermissionState.limited) {
+//         Log.d("相册访问受限,去设置受限");
+//         PhotoManager.presentLimited();
+//       } else {
+//         Log.d("相册无授权,去设置");
+//         DialogEngine.show(
+//           widget: AppDefaultDialog(
+//             "无相册权限,前往设置",
+//             confirmAction: () {
+//               PhotoManager.openSetting();
+//             },
+//           ),
+//         );
+//       }
+//     } else {
+//       //Android是否有SD卡权限
+//       var status = await Permission.storage.status;
+//       late PermissionState ps;
+//       if (status.isGranted) {
+//         // 已经授权
+//         success();
+//       } else {
+//         // 未授权,则准备发起一次申请
+//         var permissionRequestFuture = PhotoManager.requestPermissionExtend();
+//
+//         // 延迟500毫秒的Future
+//         var delayFuture = Future.delayed(Duration(milliseconds: 500), () => 'delay');
+//
+//         // 使用Future.any等待上述两个Future中的任何一个完成
+//         var firstCompleted = await Future.any([permissionRequestFuture, delayFuture]);
+//
+//         // 判断响应结果
+//         if (firstCompleted == 'delay') {
+//           Log.d("判断响应结果:1");
+//           // 如果是延迟Future完成了,表示500毫秒内没有获得权限响应,显示对话框
+//           _showPermissionDialog("“YYBusiness”想访问你的多媒体相册 用于图片上传,图片保存等功能,请允许我获取您的权限");
+//           // 再次等待权限请求结果
+//           ps = await permissionRequestFuture;
+//           DialogEngine.dismiss(tag: "permission");
+//         } else {
+//           Log.d("判断响应结果:2");
+//           // 权限请求已完成,立刻取消对话框展示(如果已经展示的话)
+//           DialogEngine.dismiss(tag: "permission");
+//           ps = firstCompleted as PermissionState;
+//         }
+//
+//         if (ps.isAuth) {
+//           // 用户授权
+//           success();
+//         } else {
+//           // 权限被拒绝
+//           await DialogEngine.show(
+//             widget: AppDefaultDialog("请到您的手机设置打开相册的权限", title: "提醒", confirmText: "去设置", confirmAction: () {
+//               openAppSettings();
+//             }),
+//           );
+//         }
+//       }
+//     }
+//   }
+//
+//   /// 申请相机权限
+//   void requestCameraPermission(void Function() success) async {
+//     // 获取当前的权限
+//     var status = await Permission.camera.status;
+//     if (status.isGranted) {
+//       // 已经授权
+//       success();
+//     } else {
+//       // 未授权,则准备发起一次申请
+//       var permissionRequestFuture = Permission.camera.request();
+//
+//       // 延迟500毫秒的Future
+//       var delayFuture = Future.delayed(Duration(milliseconds: 500), () => 'delay');
+//
+//       // 使用Future.any等待上述两个Future中的任何一个完成
+//       var firstCompleted = await Future.any([permissionRequestFuture, delayFuture]);
+//
+//       // 判断响应结果
+//       if (firstCompleted == 'delay') {
+//         // 如果是延迟Future完成了,表示500毫秒内没有获得权限响应,显示对话框
+//         _showPermissionDialog("“YYBusiness”申请调用您的相机权限 用于使用拍摄头像,图片上传保存等功能,请允许我获取您的权限");
+//         // 再次等待权限请求结果
+//         status = await permissionRequestFuture;
+//         DialogEngine.dismiss(tag: "permission");
+//       } else {
+//         // 权限请求已完成,立刻取消对话框展示(如果已经展示的话)
+//         DialogEngine.dismiss(tag: "permission");
+//         status = firstCompleted as PermissionStatus;
+//       }
+//
+//       if (status.isGranted) {
+//         // 用户授权
+//         success();
+//       } else {
+//         // 权限被拒绝
+//         await DialogEngine.show(
+//           widget: AppDefaultDialog("请到您的手机设置打开相机的权限", title: "提醒", confirmText: "去设置", confirmAction: () {
+//             openAppSettings();
+//           }),
+//         );
+//       }
+//     }
+//   }
+//
+//   /// 校验并申请定位权限
+//   Future<bool> requestLocationPermission() async {
+//     // 获取当前的权限
+//     var status = await Permission.location.status;
+//     if (status.isGranted) {
+//       // 已经授权
+//       return true;
+//     } else {
+//       // 未授权,则准备发起一次申请
+//       var permissionRequestFuture = Permission.location.request();
+//
+//       // 延迟500毫秒的Future
+//       var delayFuture = Future.delayed(Duration(milliseconds: 500), () => 'delay');
+//
+//       // 使用Future.any等待上述两个Future中的任何一个完成
+//       var firstCompleted = await Future.any([permissionRequestFuture, delayFuture]);
+//
+//       // 判断响应结果
+//       if (firstCompleted == 'delay') {
+//         // 如果是延迟Future完成了,表示500毫秒内没有获得权限响应,显示对话框
+//         _showPermissionDialog("“YYBusiness”想访问您的定位权限获取您的位置来推荐附近的工作");
+//         // 再次等待权限请求结果
+//         status = await permissionRequestFuture;
+//         DialogEngine.dismiss(tag: "permission");
+//       } else {
+//         Log.d("权限请求已完成,立刻取消对话框展示");
+//         // 权限请求已完成,立刻取消对话框展示(如果已经展示的话)
+//         DialogEngine.dismiss(tag: "permission");
+//         status = firstCompleted as PermissionStatus;
+//       }
+//
+//       if (status.isGranted) {
+//         // 用户授权
+//         return true;
+//       } else {
+//         // 权限被拒绝
+//         await DialogEngine.show(
+//           widget: AppDefaultDialog("请到您的手机设置打开定位的权限", title: "提醒", confirmText: "去设置", confirmAction: () {
+//             openAppSettings();
+//           }),
+//         );
+//         return false;
+//       }
+//     }
+//   }
+//
+//   //顶部展示权限声明详情弹窗
+//   void _showPermissionDialog(String desc) {
+//     DialogEngine.show(
+//       clickMaskDismiss: false,
+//       backDismiss: true,
+//       tag: "permission",
+//       maskColor: Colors.transparent,
+//       widget: PermissionDescDialog(desc),
+//     );
+//   }
+// }

+ 3 - 3
packages/cs_plugin_platform/pubspec.yaml

@@ -35,18 +35,18 @@ dependencies:
   permission_handler: ^8.3.0
 
   # 图片选择  https://github.com/fluttercandies/flutter_wechat_assets_picker/blob/main/README-ZH.md
-  wechat_assets_picker: 9.0.2
+#  wechat_assets_picker: 9.0.2
   # 图片加载框架 https://github.com/fluttercandies/extended_image/blob/master/README-ZH.md
   # 封装在 MyLoadImage 控件中,推荐图片全部用 MyLoadImage
   # wechat_assets_picker 内部已经依赖了 extended_image 框架!无需再次依赖
 
   # 相机选择器 https://github.com/fluttercandies/flutter_wechat_camera_picker/blob/main/README-ZH.md
   # 与上面图片选择配套的相机模块,基于 wechat_assets_picker 与 camera 依赖实现的
-  wechat_camera_picker: 4.2.1
+#  wechat_camera_picker: 4.2.1
 
   # 图片裁剪  https://github.com/hnvn/flutter_image_cropper
   # 与上面图片选择或相机拍照结合使用,裁剪图片为1:1或4:3或16:9的比例
-  image_cropper: 5.0.1
+#  image_cropper: 5.0.1
 
   # 图片压缩 https://github.com/fluttercandies/flutter_image_compress
   #          https://pub.dev/packages/flutter_image_compress