From 21854e97a14420cbb22b0bc71afc26db59ce02ae Mon Sep 17 00:00:00 2001
From: Daisy <>
Date: Wed, 13 Mar 2024 15:51:54 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8A=E6=9E=B6=E5=AE=A1?=
=?UTF-8?q?=E6=A0=B8=E5=87=BA=E7=8E=B0=E7=9A=84=E6=8B=92=E7=BB=9D=E7=9B=B8?=
=?UTF-8?q?=E6=9C=BA=E6=9D=83=E9=99=90=E5=90=8E=E6=97=A0=E6=B3=95=E4=BD=BF?=
=?UTF-8?q?=E7=94=A8=E5=A4=B4=E5=83=8F=E5=8A=9F=E8=83=BD=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../android/app/src/main/AndroidManifest.xml | 1 -
star_lock/ios/Podfile | 4 +-
.../minePersonInfo_page.dart | 147 +++++++++++-------
star_lock/pubspec.yaml | 1 +
4 files changed, 97 insertions(+), 56 deletions(-)
diff --git a/star_lock/android/app/src/main/AndroidManifest.xml b/star_lock/android/app/src/main/AndroidManifest.xml
index db10da2b..06212362 100644
--- a/star_lock/android/app/src/main/AndroidManifest.xml
+++ b/star_lock/android/app/src/main/AndroidManifest.xml
@@ -30,7 +30,6 @@
-
diff --git a/star_lock/ios/Podfile b/star_lock/ios/Podfile
index c3a7ff7e..fc1e6a3b 100644
--- a/star_lock/ios/Podfile
+++ b/star_lock/ios/Podfile
@@ -64,7 +64,7 @@ post_install do |installer|
# 'PERMISSION_CONTACTS=1',
## dart: PermissionGroup.camera
- # 'PERMISSION_CAMERA=1',
+ 'PERMISSION_CAMERA=1',
## dart: PermissionGroup.microphone
# 'PERMISSION_MICROPHONE=1',
@@ -73,7 +73,7 @@ post_install do |installer|
# 'PERMISSION_SPEECH_RECOGNIZER=1',
## dart: PermissionGroup.photos
- # 'PERMISSION_PHOTOS=1',
+ 'PERMISSION_PHOTOS=1',
# dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
'PERMISSION_LOCATION=1',
diff --git a/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart b/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart
index 61a3557f..e08b40d6 100644
--- a/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart
+++ b/star_lock/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart
@@ -43,48 +43,42 @@ class _MinePersonInfoPageState extends State {
backgroundColor: AppColors.mainColor),
body: Column(
children: [
- Obx(() => CommonItem(
- leftTitel: TranslationLoader.lanKeys!.avatar!.tr,
- rightTitle: "",
- allHeight: 100.h,
- isHaveLine: true,
- isHaveDirection: true,
- isHaveRightWidget: true,
- rightWidget: ClipOval(
- child: state.mineInfoData.value.headUrl != null
- ? CachedNetworkImage(
- imageUrl: Uri.encodeFull(
- state.mineInfoData.value.headUrl!),
- width: 72.w,
- height: 72.w,
- fit: BoxFit.fill,
- placeholder: (context, url) => Image.asset(
- 'images/controls_user.png',
- width: 72.w,
- height: 72.w,
- fit: BoxFit.fill,
- ))
- : Image.asset(
- 'images/controls_user.png',
- width: 72.w,
- height: 72.w,
- fit: BoxFit.fill,
- ),
- ),
- action: () async {
- //安卓平台下首次进入应用需向用户告知获取权限用途弹窗
- if (Platform.isAndroid) {
- AppFirstEnterHandle()
- .getAppFirstEnter(context, isAgreeCamera);
- var getFlag = await Storage.getString(isAgreeCamera);
- if (getFlag == isAgreeCamera) {
- requestCameraPermission();
- }
- } else {
- requestCameraPermission();
- }
- },
- )),
+ CommonItem(
+ leftTitel: TranslationLoader.lanKeys!.avatar!.tr,
+ rightTitle: "",
+ allHeight: 100.h,
+ isHaveLine: true,
+ isHaveDirection: true,
+ isHaveRightWidget: true,
+ rightWidget: ClipOval(
+ child: state.image != null
+ ? Image.file(
+ File(state.image!.path),
+ width: 72.w,
+ height: 72.w,
+ fit: BoxFit.fill,
+ )
+ : Image.asset(
+ 'images/controls_user.png',
+ width: 72.w,
+ height: 72.w,
+ fit: BoxFit.fill,
+ ),
+ ),
+ action: () async {
+ //安卓平台下首次进入应用需向用户告知获取权限用途弹窗
+ if (Platform.isAndroid) {
+ AppFirstEnterHandle()
+ .getAppFirstEnter(context, isAgreeCamera);
+ var getFlag = await Storage.getString(isAgreeCamera);
+ if (getFlag == isAgreeCamera) {
+ _openModalBottomSheet();
+ }
+ } else {
+ _openModalBottomSheet();
+ }
+ },
+ ),
Obx(() => CommonItem(
leftTitel: TranslationLoader.lanKeys!.nickName!.tr,
rightTitle: state.mineInfoData.value.nickname != null
@@ -189,7 +183,7 @@ class _MinePersonInfoPageState extends State {
if (status.isGranted) {
// 如果权限已经被授予,执行您的相机操作
// 这里可以调用打开相机的方法或者跳转到相机页面等
- _openModalBottomSheet();
+ selectCamera();
} else {
// 如果权限尚未被授予,请求相机权限
// 此处会显示系统权限请求对话框
@@ -197,28 +191,53 @@ class _MinePersonInfoPageState extends State {
if (status.isGranted) {
// 如果用户授予了相机权限,执行您的相机操作
- _openModalBottomSheet();
+ selectCamera();
} else {
// 如果用户拒绝了相机权限,您可以提供适当的提示
// 或者引导用户手动授予权限
- _showPermissinDialog();
+ showPermissionDeniedDialog();
}
}
}
- Future _showPermissinDialog() async {
+ Future requestPhotoPermission() async {
+ // 检查是否已经授予相机权限
+ PermissionStatus status = await Permission.photos.status;
+
+ if (status.isGranted) {
+ // 如果权限已经被授予,执行您的相机操作
+ // 这里可以调用打开相机的方法或者跳转到相机页面等
+ selectImage();
+ } else {
+ // 如果权限尚未被授予,请求相机权限
+ // 此处会显示系统权限请求对话框
+ status = await Permission.photos.request();
+
+ if (status.isGranted) {
+ // 如果用户授予了相机权限,执行您的相机操作
+ selectImage();
+ } else {
+ // 如果用户拒绝了相机权限,您可以提供适当的提示
+ // 或者引导用户手动授予权限
+ showPermissionDeniedDialog();
+ }
+ }
+ }
+
+ // 显示权限被永久拒绝的提示对话框
+ void showPermissionDeniedDialog() {
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.'),
+ title: const Text('权限被拒绝'),
+ content: const Text('请手动在系统设置中开启相册权限以继续使用应用。'),
actions: [
TextButton(
- child: const Text('OK'),
+ child: const Text('去设置'),
onPressed: () {
- Navigator.of(context).pop();
+ openAppSettings(); // 打开系统设置页面
+ Navigator.of(context).pop(); // 关闭对话框
},
),
],
@@ -240,9 +259,11 @@ class _MinePersonInfoPageState extends State {
int getSelectIndex = value;
if (getSelectIndex == 0) {
//拍照选项
- selectCamera();
+ // selectCamera();
+ requestCameraPermission();
} else if (getSelectIndex == 1) {
- selectImage();
+ // selectImage();
+ requestPhotoPermission();
}
},
);
@@ -278,4 +299,24 @@ class _MinePersonInfoPageState extends State {
setState(() {});
}
}
+
+ // child: state.mineInfoData.value.headUrl != null
+ // ? CachedNetworkImage(
+ // imageUrl: Uri.encodeFull(
+ // state.mineInfoData.value.headUrl!),
+ // width: 72.w,
+ // height: 72.w,
+ // fit: BoxFit.fill,
+ // placeholder: (context, url) => Image.asset(
+ // 'images/controls_user.png',
+ // width: 72.w,
+ // height: 72.w,
+ // fit: BoxFit.fill,
+ // ))
+ // : Image.asset(
+ // 'images/controls_user.png',
+ // width: 72.w,
+ // height: 72.w,
+ // fit: BoxFit.fill,
+ // ),
}
diff --git a/star_lock/pubspec.yaml b/star_lock/pubspec.yaml
index 01d85bb6..625f0740 100644
--- a/star_lock/pubspec.yaml
+++ b/star_lock/pubspec.yaml
@@ -140,6 +140,7 @@ dependencies:
#侧滑删除
flutter_slidable: ^3.0.1
audio_service: ^0.18.12
+ app_settings: ^5.1.1
system_settings: ^2.0.0
dev_dependencies: