Browse Source

[new]增加文件权限申请弹窗

zk 1 year ago
parent
commit
171c7d19bb
2 changed files with 53 additions and 5 deletions
  1. 40 4
      lib/module/audiopicker/controller.dart
  2. 13 1
      lib/module/record/record_handler.dart

+ 40 - 4
lib/module/audiopicker/controller.dart

@@ -5,9 +5,9 @@ import 'package:electronic_assistant/resource/string.gen.dart';
 import 'package:electronic_assistant/utils/audio_picker_utils.dart';
 import 'package:electronic_assistant/utils/audio_picker_utils.dart';
 import 'package:electronic_assistant/utils/error_handler.dart';
 import 'package:electronic_assistant/utils/error_handler.dart';
 import 'package:electronic_assistant/utils/file_upload_check_helper.dart';
 import 'package:electronic_assistant/utils/file_upload_check_helper.dart';
-import 'package:electronic_assistant/utils/http_handler.dart';
 import 'package:electronic_assistant/utils/toast_util.dart';
 import 'package:electronic_assistant/utils/toast_util.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/cupertino.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:get/get.dart';
 import 'package:photo_manager/photo_manager.dart';
 import 'package:photo_manager/photo_manager.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
@@ -15,6 +15,8 @@ import 'package:uuid/uuid.dart';
 
 
 import '../../data/bean/talks.dart';
 import '../../data/bean/talks.dart';
 import '../../data/repositories/talk_repository.dart';
 import '../../data/repositories/talk_repository.dart';
+import '../../dialog/alert_dialog.dart';
+import '../../resource/colors.gen.dart';
 import '../talk/view.dart';
 import '../talk/view.dart';
 
 
 class AudioPickerController extends BaseController {
 class AudioPickerController extends BaseController {
@@ -34,9 +36,15 @@ class AudioPickerController extends BaseController {
   void onReady() async {
   void onReady() async {
     super.onReady();
     super.onReady();
     if (!await AudioPickerUtils.hasPermission()) {
     if (!await AudioPickerUtils.hasPermission()) {
-      bool permission = await AudioPickerUtils.requestPermissionExtend();
-      if (!permission) {
-        ToastUtil.showToast(StringName.authorizationFailed.tr);
+      bool isAllow = await _showRequestPermissionDialog();
+      if (isAllow) {
+        bool permission = await AudioPickerUtils.requestPermissionExtend();
+        if (!permission) {
+          _onRecordPermissionDenied();
+          return;
+        }
+      } else {
+        _onRecordPermissionDenied();
         return;
         return;
       }
       }
     }
     }
@@ -45,6 +53,34 @@ class AudioPickerController extends BaseController {
     requestList(0, limit, isClearAll: true);
     requestList(0, limit, isClearAll: true);
   }
   }
 
 
+  _onRecordPermissionDenied() {
+    ToastUtil.showToast(StringName.authorizationFailed.tr);
+  }
+
+  Future<bool> _showRequestPermissionDialog() async {
+    bool? isAllow = await EAAlertDialog.show(
+        contentWidget: Container(
+          margin: EdgeInsets.only(top: 16.h),
+          child: Text(
+            textAlign: TextAlign.center,
+            '是否允许小听获取此设备的存储权限,为您提供转文字、智能总结服务?',
+            style: TextStyle(
+                fontWeight: FontWeight.bold,
+                fontSize: 15.sp,
+                color: ColorName.primaryTextColor),
+          ),
+        ),
+        cancelText: '禁止',
+        confirmText: '允许',
+        cancelOnTap: () {
+          EAAlertDialog.dismiss(result: false);
+        },
+        confirmOnTap: () {
+          EAAlertDialog.dismiss(result: true);
+        });
+    return isAllow ?? false;
+  }
+
   void requestList(int offset, int limit, {bool? isClearAll = false}) {
   void requestList(int offset, int limit, {bool? isClearAll = false}) {
     if (currentPath == null) {
     if (currentPath == null) {
       return;
       return;

+ 13 - 1
lib/module/record/record_handler.dart

@@ -3,8 +3,10 @@ import 'dart:io';
 import 'dart:typed_data';
 import 'dart:typed_data';
 import 'package:custom_notification/custom_notification.dart';
 import 'package:custom_notification/custom_notification.dart';
 import 'package:electronic_assistant/module/record/record_task.dart';
 import 'package:electronic_assistant/module/record/record_task.dart';
+import 'package:electronic_assistant/resource/colors.gen.dart';
 import 'package:electronic_assistant/router/app_pages.dart';
 import 'package:electronic_assistant/router/app_pages.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:flutter/cupertino.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:flutter_sound/flutter_sound.dart';
 import 'package:flutter_sound/flutter_sound.dart';
 import 'package:flutter_sound/public/flutter_sound_recorder.dart';
 import 'package:flutter_sound/public/flutter_sound_recorder.dart';
 import 'package:get/get.dart';
 import 'package:get/get.dart';
@@ -213,7 +215,17 @@ class RecordHandler {
 
 
   Future<bool> _showRequestPermissionDialog() async {
   Future<bool> _showRequestPermissionDialog() async {
     bool? isAllow = await EAAlertDialog.show(
     bool? isAllow = await EAAlertDialog.show(
-        contentText: '是否允许小听获取此设备的麦克风权限,为您提供转文字、智能总结服务?',
+        contentWidget: Container(
+          margin: EdgeInsets.only(top: 16.h),
+          child: Text(
+            textAlign: TextAlign.center,
+            '是否允许小听获取此设备的麦克风权限,为您提供转文字、智能总结服务?',
+            style: TextStyle(
+                fontWeight: FontWeight.bold,
+                fontSize: 15.sp,
+                color: ColorName.primaryTextColor),
+          ),
+        ),
         cancelText: '禁止',
         cancelText: '禁止',
         confirmText: '允许',
         confirmText: '允许',
         cancelOnTap: () {
         cancelOnTap: () {