From aa108fca8547e797fec806ffb1f8f9d5b95c923c Mon Sep 17 00:00:00 2001 From: Daisy <> Date: Thu, 7 Mar 2024 17:59:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=AE=89=E5=8D=93=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E7=9B=B8=E5=86=8C/=E7=9B=B8=E6=9C=BA=E6=9D=83?= =?UTF-8?q?=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../minePersonInfo_page.dart | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart b/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart index ac26b9b7..266ff343 100644 --- a/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart +++ b/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:image_picker/image_picker.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart'; import 'package:star_lock/tools/custom_bottom_sheet.dart'; @@ -69,7 +70,7 @@ class _MinePersonInfoPageState extends State { ), ), action: () { - _openModalBottomSheet(); + requestCameraPermission(); }, )), Obx(() => CommonItem( @@ -169,6 +170,51 @@ class _MinePersonInfoPageState extends State { )); } + Future requestCameraPermission() async { + // 检查是否已经授予相机权限 + PermissionStatus status = await Permission.camera.status; + + if (status.isGranted) { + // 如果权限已经被授予,执行您的相机操作 + // 这里可以调用打开相机的方法或者跳转到相机页面等 + _openModalBottomSheet(); + } else { + // 如果权限尚未被授予,请求相机权限 + // 此处会显示系统权限请求对话框 + status = await Permission.camera.request(); + + if (status.isGranted) { + // 如果用户授予了相机权限,执行您的相机操作 + _openModalBottomSheet(); + } else { + // 如果用户拒绝了相机权限,您可以提供适当的提示 + // 或者引导用户手动授予权限 + _showPermissinDialog(); + } + } + } + + Future _showPermissinDialog() async { + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Permission Required'), + content: const Text( + 'You need to grant camera permission to use this feature.'), + actions: [ + TextButton( + child: const Text('OK'), + onPressed: () { + Navigator.of(context).pop(); + }, + ), + ], + ); + }, + ); + } + Future _openModalBottomSheet() async { showModalBottomSheet( context: context,