fix:增加上传头像时的权限判断
This commit is contained in:
parent
104ea422ee
commit
fab0f9d4ca
@ -1153,6 +1153,7 @@
|
||||
"是否要远程开锁": "Do you want to unlock remotely",
|
||||
"国家地区的选择将影响数据安全,你当前选择的是": "The choice of country or region will affect data security. What is your current choice",
|
||||
"请确认后再继续": "Please confirm before continuing",
|
||||
"需要相机权限": "Camera permission required",
|
||||
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "The activation and deactivation of this feature can only be done through Bluetooth on the phone near the lock",
|
||||
"网关添加成功": "Gateway added successfully"
|
||||
}
|
||||
|
||||
@ -1160,6 +1160,7 @@
|
||||
"繁体中文(中国香港)": "繁体中文(中国香港)",
|
||||
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
|
||||
"请确认后再继续": "请确认后再继续",
|
||||
"需要相机权限": "需要相机权限",
|
||||
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行",
|
||||
"网关添加成功": "网关添加成功"
|
||||
}
|
||||
|
||||
@ -1162,5 +1162,6 @@
|
||||
"繁体中文(中国香港)": "繁体中文(中国香港)",
|
||||
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
|
||||
"请确认后再继续": "请确认后再继续",
|
||||
"需要相机权限": "需要相机权限",
|
||||
"网关添加成功": "网关添加成功"
|
||||
}
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'dart:typed_data';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
@ -31,27 +31,30 @@ class MinePersonInfoLogic extends BaseGetXController {
|
||||
|
||||
//上传头像 先获取upToken 再调用updateUserInfo
|
||||
Future<void> getUpTokenRequest(String filename, int size) async {
|
||||
final MinePersonGetUploadFileInfoEntity entity = await ApiRepository.to.getUpToken(
|
||||
userId: state.mineInfoData.value.uid!.toString(),
|
||||
filename: filename,
|
||||
size: size);
|
||||
final MinePersonGetUploadFileInfoEntity entity = await ApiRepository.to
|
||||
.getUpToken(
|
||||
userId: state.mineInfoData.value.uid!.toString(),
|
||||
filename: filename,
|
||||
size: size);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
uploadFile(entity);
|
||||
}
|
||||
}
|
||||
|
||||
// 上传头像
|
||||
Future<void> uploadFile(MinePersonGetUploadFileInfoEntity minePersonGetUploadFileInfoEntity) async {
|
||||
Future<void> uploadFile(
|
||||
MinePersonGetUploadFileInfoEntity
|
||||
minePersonGetUploadFileInfoEntity) async {
|
||||
final File bytes = File(state.image!.path);
|
||||
final Uint8List enc = await bytes.readAsBytes();
|
||||
|
||||
final FormData form = FormData(minePersonGetUploadFileInfoEntity.data!.formData!);
|
||||
form.files.add(
|
||||
MapEntry(
|
||||
minePersonGetUploadFileInfoEntity.data!.fileField!,
|
||||
MultipartFile(enc, filename: minePersonGetUploadFileInfoEntity.data!.formData!['key'])
|
||||
)
|
||||
);
|
||||
final FormData form =
|
||||
FormData(minePersonGetUploadFileInfoEntity.data!.formData!);
|
||||
form.files.add(MapEntry(
|
||||
minePersonGetUploadFileInfoEntity.data!.fileField!,
|
||||
MultipartFile(enc,
|
||||
filename:
|
||||
minePersonGetUploadFileInfoEntity.data!.formData!['key'])));
|
||||
|
||||
final LoginEntity entity = await ApiRepository.to.uploadFile(
|
||||
url: minePersonGetUploadFileInfoEntity.data!.uploadUrl!, body: form);
|
||||
@ -63,7 +66,8 @@ class MinePersonInfoLogic extends BaseGetXController {
|
||||
|
||||
//更新个人信息-头像
|
||||
Future<void> updateUserInfoRequest(String headUrl) async {
|
||||
final PasswordKeyListEntity entity = await ApiRepository.to.updateUserHeadUrlInfo(headUrl: headUrl);
|
||||
final PasswordKeyListEntity entity =
|
||||
await ApiRepository.to.updateUserHeadUrlInfo(headUrl: headUrl);
|
||||
if (entity.errorCode!.codeIsSuccessful) {
|
||||
state.headUrl.value = headUrl;
|
||||
state.mineInfoData.value.headUrl = state.headUrl.value;
|
||||
@ -88,9 +92,9 @@ class MinePersonInfoLogic extends BaseGetXController {
|
||||
///拍摄照片
|
||||
Future<void> selectCamera() async {
|
||||
final XFile? photo = await state.imagePicker.pickImage(
|
||||
source: ImageSource.camera,
|
||||
maxHeight: 250,
|
||||
maxWidth: 250,
|
||||
source: ImageSource.camera,
|
||||
maxHeight: 250,
|
||||
maxWidth: 250,
|
||||
);
|
||||
if (photo != null) {
|
||||
state.image = photo;
|
||||
@ -117,16 +121,68 @@ class MinePersonInfoLogic extends BaseGetXController {
|
||||
|
||||
//权限判断 访问相机
|
||||
Future<void> _checkCameraPermission() async {
|
||||
final bool status = await PermissionDialog.request(Permission.camera);
|
||||
if (status) {
|
||||
final PermissionStatus status = await Permission.camera.status;
|
||||
if (status.isPermanentlyDenied) {
|
||||
// 用户永久拒绝了权限,引导用户去设置中心开启
|
||||
Get.dialog(
|
||||
AlertDialog(
|
||||
title: Text('需要相机权限'.tr),
|
||||
content: Text('请在设置中允许访问相机'.tr),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => Get.back(),
|
||||
child: Text('取消'.tr),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Get.back();
|
||||
openAppSettings();
|
||||
},
|
||||
child: Text('去设置'.tr),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// 权限未被永久拒绝,尝试请求权限
|
||||
final bool granted = await PermissionDialog.request(Permission.camera);
|
||||
if (granted) {
|
||||
selectCamera();
|
||||
}
|
||||
}
|
||||
|
||||
//权限判断 访问相册
|
||||
Future<void> _checkPhotoPermission() async {
|
||||
final bool status = await PermissionDialog.requestPhotos();
|
||||
if (status) {
|
||||
final PermissionStatus status = await Permission.photos.status;
|
||||
if (status.isPermanentlyDenied) {
|
||||
// 用户永久拒绝了权限,引导用户去设置中心开启
|
||||
Get.dialog(
|
||||
AlertDialog(
|
||||
title: Text('需要相册权限'.tr),
|
||||
content: Text('请在设置中允许访问相册'.tr),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () => Get.back(),
|
||||
child: Text('取消'.tr),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
Get.back();
|
||||
openAppSettings();
|
||||
},
|
||||
child: Text('去设置'.tr),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
// 权限未被永久拒绝,尝试请求权限
|
||||
final bool granted = await PermissionDialog.requestPhotos();
|
||||
if (granted) {
|
||||
selectImage();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user