From 96e6fd54633acf3684d6af956ad8ecbed797950f Mon Sep 17 00:00:00 2001 From: anfe <448468458@qq.com> Date: Wed, 10 Apr 2024 09:47:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=BB=9F=E4=B8=80=E6=9D=83=E9=99=90dialog?= =?UTF-8?q?=E7=9A=84=E6=8E=A7=E5=88=B6=EF=BC=8C=E9=92=88=E5=AF=B9android?= =?UTF-8?q?=E5=8D=8E=E4=B8=BA=E7=9A=84=E8=BF=87=E5=AE=A1=E8=A6=81=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/permission/permission_dialog.dart | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 star_lock/lib/permission/permission_dialog.dart diff --git a/star_lock/lib/permission/permission_dialog.dart b/star_lock/lib/permission/permission_dialog.dart new file mode 100644 index 00000000..12b4a80a --- /dev/null +++ b/star_lock/lib/permission/permission_dialog.dart @@ -0,0 +1,84 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:star_lock/app_settings/app_settings.dart'; + +class PermissionDialog { + static Map titles = { + Permission.camera: '相机', + Permission.photos: '相册', + Permission.storage: '读写', + Permission.location: '定位', + }; + + static Map contents = { + Permission.camera: '需要访问相机权限才能拍照上传文件例如头像上传', + Permission.photos: '需要访问相机权限才能使用相册图片上传文件上传头像', + Permission.storage: '需要访问读写权限才能使用本地图片上传头像', + Permission.location: '需要访问定位权限才能使用添加钥匙功能的位置信息', + }; + + //显示权限判断申请框 + static Future request(Permission permission) async { + if (Get.context == null) { + return false; + } + bool application = true; + if (AppPlatform.isAndroid) { + application = await showDialog( + context: Get.context!, + builder: (BuildContext context) { + return AlertDialog( + title: Text('申请${titles[permission] ?? ''}权限'), + content: Text(contents[permission] ?? ''), + actions: [ + TextButton( + child: const Text('不允许'), + onPressed: () { + Get.back(result: false); + }, + ), + TextButton( + child: const Text('允许'), + onPressed: () { + Get.back(result: true); + }, + ), + ], + ); + }, + ); + } + if (!application) { + showSet(permission); + return false; + } else { + return await permission.request().isGranted; + } + } + + //显示设置页面 + static Future showSet(Permission permission) async { + if (Get.context == null) { + return; + } + showDialog( + context: Get.context!, + builder: (BuildContext context) { + return AlertDialog( + title: Text('${titles[permission] ?? ''}权限被拒绝'), + content: Text('${contents[permission] ?? ''},请手动在系统设置中开启${titles[permission]}权限以继续使用应用。'), + actions: [ + TextButton( + child: Text('去设置'), + onPressed: () { + Get.back(); // 关闭对话框 + openAppSettings(); // 打开系统设置页面 + }, + ), + ], + ); + }, + ); + } +}