Browse Source

启动时,添加相机权限的获取,在人脸识别处,添加确认是否有相机权限

finlay 1 year ago
parent
commit
11b7a1f805
3 changed files with 34 additions and 2 deletions
  1. 1 1
      lib/global.dart
  2. 3 1
      lib/managers/permission.dart
  3. 30 0
      lib/pages/patient/create/controller.dart

+ 1 - 1
lib/global.dart

@@ -96,7 +96,7 @@ abstract class Global {
       'BluetoothScan',
       'BluetoothAdvertise',
       'InstallPackages',
-      // 'Camera',
+      'Camera',
     ]);
     // await permissionManager.requestBluetoothConnectPermission();
     // await permissionManager.requestBluetoothAdvertisePermission();

+ 3 - 1
lib/managers/permission.dart

@@ -58,7 +58,9 @@ class PermissionManager implements IPermissionManager {
   @override
   Future<bool> requestCameraPermissions() async {
     var status = await Permission.camera.status;
-    if (!status.isGranted) {
+    if (status.isGranted) {
+      return true;
+    } else {
       PermissionStatus status = await Permission.camera.request();
       if (status.isGranted) {
         return true;

+ 30 - 0
lib/pages/patient/create/controller.dart

@@ -11,6 +11,7 @@ import 'package:vitalapp/global.dart';
 import 'package:vitalapp/managers/interfaces/device.dart';
 import 'package:vitalapp/managers/interfaces/models/device.dart';
 import 'package:vitalapp/managers/interfaces/patient.dart';
+import 'package:vitalapp/managers/interfaces/permission.dart';
 import 'package:vitalapp/pages/controllers/crowd_labels.dart';
 import 'package:vitalapp/pages/controllers/home_nav_mixin.dart';
 import 'package:vitalapp/pages/patient/bluetooth_card_reader/view.dart';
@@ -323,6 +324,35 @@ class CreatePatientController extends FControllerBase with HomeNavMixin {
 
   /// 点击人脸识别
   void onFaceIdLoginClicked() async {
+    IPermissionManager permissionManager = Get.find<IPermissionManager>();
+
+    var isCameraPermissions =
+        await permissionManager.requestCameraPermissions();
+    if (!isCameraPermissions) {
+      await Get.dialog(
+        VAlertDialog(
+          title: "提示",
+          width: 420,
+          content: Container(
+            height: 32,
+            padding: const EdgeInsets.symmetric(horizontal: 24),
+            alignment: Alignment.center,
+            child: const Text(
+              "未授予相机权限,前去设置",
+              style: TextStyle(fontSize: 20),
+            ),
+          ),
+          showCancel: false,
+          onConfirm: () async {
+            Get.back();
+            await permissionManager.openAppSettingsAsync();
+          },
+        ),
+        barrierDismissible: false,
+        barrierColor: Colors.black.withOpacity(.4),
+      );
+      return;
+    }
     Store.user.isShowUserCard = false;
     final FaceRecognitionResult? result = await Get.to<FaceRecognitionResult>(
       () => const FacialRecognitionPage(