From a78c9135df38c9568a4bd46aa60e22603a30415d Mon Sep 17 00:00:00 2001 From: anfe <448468458@qq.com> Date: Wed, 15 May 2024 17:17:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=20ios=20=E8=93=9D?= =?UTF-8?q?=E7=89=99=E6=9D=83=E9=99=90=E4=B8=8D=E6=8F=90=E7=A4=BA=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widget/permission/permission_dialog.dart | 37 ++++++++++++++----- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/star_lock/lib/widget/permission/permission_dialog.dart b/star_lock/lib/widget/permission/permission_dialog.dart index dabaa3df..acaf315b 100644 --- a/star_lock/lib/widget/permission/permission_dialog.dart +++ b/star_lock/lib/widget/permission/permission_dialog.dart @@ -32,14 +32,30 @@ class PermissionDialog { return false; } bool application = true; - Map statuses = await [ + List permissions = [ + Permission.bluetooth, Permission.bluetoothScan, Permission.bluetoothConnect, - ].request(); + ]; + Future getPermissionStatus(List permissions) async { + bool isGranted = true; + List permissionStatus = []; + for (Permission per in permissions) { + permissionStatus.add(await per.status); + } + for (PermissionStatus per in permissionStatus) { + isGranted = isGranted && per.isGranted; + } + if (GetPlatform.isIOS) { + isGranted = permissionStatus[0].isGranted; + } + return isGranted; + } + Permission permission = Permission.bluetoothScan; dynamic cache = await Storage.getString(titles[permission]); - bool isGranted = statuses.values.every((element) => element.isGranted); - if (AppPlatform.isAndroid && !isGranted && cache is! String) { + bool isGranted = await getPermissionStatus(permissions); + if (GetPlatform.isAndroid && !isGranted && cache is! String) { application = await showCupertinoDialog( context: Get.context!, builder: (context) { @@ -69,16 +85,19 @@ class PermissionDialog { if (application) { await Storage.setString(titles[permission], titles[permission]); } - } else if (cache is String) { - bool isDenied = statuses.values.every((element) => element.isDenied); - if (isDenied) { + } else if (cache is! String) { + await Storage.setString(titles[permission], titles[permission]); + } else { + bool isGranted = await getPermissionStatus(permissions); + if (!isGranted) { showSet(permission); return false; } } if (application) { - PermissionStatus status = await permission.request(); - return status.isGranted; + await permissions.request(); + bool isGranted = await getPermissionStatus(permissions); + return isGranted; } return false; }