Переглянути джерело

[feat]亲密度分析,增加权限获取失败时的提示

hezihao 7 місяців тому
батько
коміт
c80ce831af

+ 2 - 0
assets/string/base/string.xml

@@ -399,6 +399,8 @@
     <string name="logout_dialog_confirm">确认</string>
     <string name="logout_dialog_desc">确定退出登录吗?</string>
 
+    <string name="picker_image_permission_denied_tip">请允许权限,才能使用该功能</string>
+
     <string name="skip">跳过</string>
     <string name="copy_success">已复制</string>
     <string name="new_user_gender_title">Hi,欢迎来到追爱小键盘</string>

+ 16 - 9
lib/module/intimacy_analyse/analyse_report/intimacy_analyse_report_view_controller.dart

@@ -107,15 +107,22 @@ class IntimacyAnalyseReportController extends BaseController {
       ProfilePage.start();
       return;
     }
-
-    // 跳转到图片选择,并返回选择的图片列表
-    List<AssetEntity> selectedAssetList = await ImagePickerUtil.pickImage(
-      context,
-      maxAssetsCount: intimacyAnalyzeConfigHelper.getMaxAssetsCount(),
-    );
-    // 跳转到亲密度分析上传页
-    if (selectedAssetList.isNotEmpty) {
-      IntimacyAnalyseUploadPage.start(selectedAssetList);
+    try {
+      // 跳转到图片选择,并返回选择的图片列表
+      List<AssetEntity> selectedAssetList = await ImagePickerUtil.pickImage(
+        context,
+        maxAssetsCount: intimacyAnalyzeConfigHelper.getMaxAssetsCount(),
+      );
+      // 跳转到亲密度分析上传页
+      if (selectedAssetList.isNotEmpty) {
+        IntimacyAnalyseUploadPage.start(selectedAssetList);
+      }
+    } catch (e) {
+      if (e is StateError) {
+        ToastUtil.show(StringName.pickerImagePermissionDeniedTip);
+      } else {
+        rethrow;
+      }
     }
   }
 }

+ 15 - 7
lib/module/intimacy_analyse/intimacy_analyse_upload/intimacy_analyse_upload_controller.dart

@@ -255,13 +255,21 @@ class IntimacyAnalyseUploadController extends BaseController {
         intimacyAnalyzeConfigHelper.getMaxAssetsCount() - uploadInfoList.length;
 
     // 跳转到图片选择,并返回选择的图片列表
-    List<AssetEntity> selectedAssetList = await ImagePickerUtil.pickImage(
-      context,
-      maxAssetsCount: count,
-    );
-    // 选择了新图片,触发上传
-    if (selectedAssetList.isNotEmpty) {
-      _handleSelectedAssetUpload(selectedAssetList);
+    try {
+      List<AssetEntity> selectedAssetList = await ImagePickerUtil.pickImage(
+        context,
+        maxAssetsCount: count,
+      );
+      // 选择了新图片,触发上传
+      if (selectedAssetList.isNotEmpty) {
+        _handleSelectedAssetUpload(selectedAssetList);
+      }
+    } catch (e) {
+      if (e is StateError) {
+        ToastUtil.show(StringName.pickerImagePermissionDeniedTip);
+      } else {
+        rethrow;
+      }
     }
   }
 

+ 20 - 13
lib/module/intimacy_analyse/screenshot_reply/conversation_analysis/conversation_analysis_controller.dart

@@ -235,19 +235,26 @@ class ConversationAnalysisController extends BaseController {
     // 计算还可以上传多少张图片
     int count =
         intimacyAnalyzeConfigHelper.getMaxAssetsCount() - uploadInfoList.length;
-
-    // 跳转到图片选择,并返回选择的图片列表
-    List<AssetEntity> selectedAssetList = await ImagePickerUtil.pickImage(
-      context,
-      maxAssetsCount: count,
-    );
-    // 选择了图片,切换到上传视图
-    if (selectedAssetList.isNotEmpty) {
-      _handleSelectedAssetUpload(selectedAssetList);
-      isUploadPage.value = true;
-    } else {
-      // 没选择图片,切换到例子视图
-      isUploadPage.value = false;
+    try {
+      // 跳转到图片选择,并返回选择的图片列表
+      List<AssetEntity> selectedAssetList = await ImagePickerUtil.pickImage(
+        context,
+        maxAssetsCount: count,
+      );
+      // 选择了图片,切换到上传视图
+      if (selectedAssetList.isNotEmpty) {
+        _handleSelectedAssetUpload(selectedAssetList);
+        isUploadPage.value = true;
+      } else {
+        // 没选择图片,切换到例子视图
+        isUploadPage.value = false;
+      }
+    } catch (e) {
+      if (e is StateError) {
+        ToastUtil.show(StringName.pickerImagePermissionDeniedTip);
+      } else {
+        rethrow;
+      }
     }
   }
 

+ 20 - 13
lib/module/intimacy_analyse/screenshot_reply/scan_image_reply/scan_image_reply_controller.dart

@@ -180,20 +180,27 @@ class ScanImageReplyController extends BaseController {
       ToastUtil.show(StringName.intimacyAnalyseIngPleaseWait);
       return;
     }
+    try {
+      // 跳转到图片选择,并返回选择的图片列表
+      List<AssetEntity> selectedAssetList = await ImagePickerUtil.pickImage(
+        context,
+        // 只能最多上传1张图片
+        maxAssetsCount: 1,
+      );
 
-    // 跳转到图片选择,并返回选择的图片列表
-    List<AssetEntity> selectedAssetList = await ImagePickerUtil.pickImage(
-      context,
-      // 只能最多上传1张图片
-      maxAssetsCount: 1,
-    );
-
-    // 切换为上传页
-    if (selectedAssetList.isNotEmpty) {
-      // 重置数据
-      _resetData();
-      // 上传图片
-      _handleSelectedAssetUpload(selectedAssetList);
+      // 切换为上传页
+      if (selectedAssetList.isNotEmpty) {
+        // 重置数据
+        _resetData();
+        // 上传图片
+        _handleSelectedAssetUpload(selectedAssetList);
+      }
+    } catch (e) {
+      if (e is StateError) {
+        ToastUtil.show(StringName.pickerImagePermissionDeniedTip);
+      } else {
+        rethrow;
+      }
     }
   }
 

+ 2 - 0
lib/resource/string.gen.dart

@@ -290,6 +290,7 @@ class StringName {
   static final String logoutDialogCancel = 'logout_dialog_cancel'.tr; // 取消
   static final String logoutDialogConfirm = 'logout_dialog_confirm'.tr; // 确认
   static final String logoutDialogDesc = 'logout_dialog_desc'.tr; // 确定退出登录吗?
+  static final String pickerImagePermissionDeniedTip = 'picker_image_permission_denied_tip'.tr; // 请允许权限,才能使用该功能
   static final String skip = 'skip'.tr; // 跳过
   static final String copySuccess = 'copy_success'.tr; // 已复制
   static final String newUserGenderTitle = 'new_user_gender_title'.tr; // Hi,欢迎来到追爱小键盘
@@ -634,6 +635,7 @@ class StringMultiSource {
       'logout_dialog_cancel': '取消',
       'logout_dialog_confirm': '确认',
       'logout_dialog_desc': '确定退出登录吗?',
+      'picker_image_permission_denied_tip': '请允许权限,才能使用该功能',
       'skip': '跳过',
       'copy_success': '已复制',
       'new_user_gender_title': 'Hi,欢迎来到追爱小键盘',