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) {