From 278e970931635b29cd456e8f915405b6ccc5d7f6 Mon Sep 17 00:00:00 2001 From: liyi Date: Fri, 28 Feb 2025 11:52:53 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E5=A2=9E=E5=8A=A0=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E6=97=A5=E5=BF=97=E4=B8=8B=E8=BD=BD=E6=97=B6=E5=90=8C?= =?UTF-8?q?=E6=97=B6=E7=94=B3=E8=AF=B7=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../editVideoLog/editVideoLog_page.dart | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart b/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart index c2475b4e..c677fc8f 100755 --- a/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart +++ b/lib/main/lockDetail/videoLog/editVideoLog/editVideoLog_page.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:star_lock/appRouters.dart'; import 'package:star_lock/main/lockDetail/videoLog/editVideoLog/editVideoLog_state.dart'; import 'package:star_lock/main/lockDetail/videoLog/videoLog/videoLog_entity.dart'; @@ -190,7 +191,7 @@ class _EditVideoLogPageState extends State { 'images/main/icon_lockDetail_monitoringDownloadVideo.png', '下载'.tr, Colors.white, - _onDownLoadClick, + _onDownLoadClickAndRequestPermission, ) : SizedBox.shrink(), state.isNavLocal.value == false @@ -207,6 +208,31 @@ class _EditVideoLogPageState extends State { ); } + Future _onDownLoadClickAndRequestPermission() async { + // 检查是否具有存储权限 + final PermissionStatus status = await Permission.storage.status; + + if (status.isGranted) { + // 如果权限已授予,执行下载逻辑 + await _onDownLoadClick(); + } else if (status.isDenied || status.isRestricted) { + // 如果权限被拒绝或受限,请求权限 + final PermissionStatus requestResult = await Permission.storage.request(); + + if (requestResult.isGranted) { + // 权限请求成功后,执行下载逻辑 + await _onDownLoadClick(); + } else { + // 用户拒绝了权限请求 + print('用户拒绝了存储权限'); + } + } else if (status.isPermanentlyDenied) { + // 如果权限被永久拒绝,提示用户前往设置页面手动开启 + print('存储权限被永久拒绝,请前往设置页面开启'); + openAppSettings(); + } + } + Future _onDownLoadClick() async { if (state.selectVideoLogList.value.isNotEmpty) { state.selectVideoLogList.value.forEach((element) {