Daisy a4a7ee9fa4 1,新增高级功能根据权限展示不同入口
2,新增添加开门通知保存时弹出需开通Alert框
3,新增增值服务套餐购包链接
4,已开通高级功能布局修改
2024-04-29 14:59:25 +08:00

153 lines
4.7 KiB
Dart

import 'dart:async';
import 'dart:io';
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_settings.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_state.dart';
import 'package:star_lock/permission/permission_dialog.dart';
import '../../../../network/api_repository.dart';
import '../../../../tools/baseGetXController.dart';
import '../../../tools/eventBusEventManage.dart';
import '../../../tools/storage.dart';
import 'minePersonGetUploadFileInfo_entity.dart';
class MinePersonInfoLogic extends BaseGetXController {
MinePersonInfoState state = MinePersonInfoState();
//用户信息
Future<void> getUserInfoRequest() async {
MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo();
if (entity.errorCode!.codeIsSuccessful) {
state.mineInfoData.value = entity.data!;
state.headUrl.value = state.mineInfoData.value.headUrl!;
}
}
//上传头像 先获取upToken 再调用updateUserInfo
Future<void> getUpTokenRequest(String filename, int size) async {
var entity = await ApiRepository.to.getUpToken(
userId: state.mineInfoData.value.uid!.toString(),
filename: filename,
size: size);
if (entity.errorCode!.codeIsSuccessful) {
uploadFile(entity);
}
}
// 上传头像
void uploadFile(
MinePersonGetUploadFileInfoEntity
minePersonGetUploadFileInfoEntity) async {
// Map<String, dynamic> user = minePersonGetUploadFileInfoEntity.data!.formData!;
var bytes = File(state.image!.path);
var enc = await bytes.readAsBytes();
// user[minePersonGetUploadFileInfoEntity.data!.fileField!] = enc;
final form = FormData(minePersonGetUploadFileInfoEntity.data!.formData!);
form.files.add(MapEntry(
minePersonGetUploadFileInfoEntity.data!.fileField!,
MultipartFile(enc,
filename:
minePersonGetUploadFileInfoEntity.data!.formData!["key"])));
var entity = await ApiRepository.to.uploadFile(
url: minePersonGetUploadFileInfoEntity.data!.uploadUrl!, body: form);
if (entity.errorCode! == -1) {
// 没有返回 返回null成功
updateUserInfoRequest(minePersonGetUploadFileInfoEntity.data!.fileUrl!);
}
}
//更新个人信息-头像
Future<void> updateUserInfoRequest(String headUrl) async {
var entity = await ApiRepository.to.updateUserHeadUrlInfo(headUrl: headUrl);
if (entity.errorCode!.codeIsSuccessful) {
state.headUrl.value = headUrl;
state.mineInfoData.value.headUrl = state.headUrl.value;
final loginData = await Storage.getLoginData();
loginData!.headUrl = headUrl;
await Storage.saveLoginData(loginData);
eventBus.fire(MineInfoChangeRefreshUI());
showToast("上传成功".tr);
}
}
//上传头像选择
Future<void> chooseCallback(int index) async {
if (index == 0) {
//拍照选项
_checkCameraPermission();
} else if (index == 1) {
_checkPhotoPermission();
}
}
///拍摄照片
Future<void> selectCamera() async {
XFile? photo = await state.imagePicker.pickImage(
source: ImageSource.camera, preferredCameraDevice: CameraDevice.rear);
if (photo != null) {
state.image = photo;
var bytes = File(state.image!.path);
var enc = await bytes.readAsBytes();
getUpTokenRequest(state.image!.name, enc.length);
}
}
///从相册选取
Future<void> selectImage() async {
XFile? image = await state.imagePicker.pickImage(
source: ImageSource.gallery,
maxHeight: 250,
maxWidth: 250,
);
if (image != null) {
state.image = image;
var bytes = File(state.image!.path);
var enc = await bytes.readAsBytes();
getUpTokenRequest(state.image!.name, enc.length);
}
}
//权限判断 访问相机
Future<void> _checkCameraPermission() async {
var status = await PermissionDialog.request(Permission.camera);
if (status) {
selectCamera();
}
}
//权限判断 访问相册
Future<void> _checkPhotoPermission() async {
bool isAndroid33 =
AppPlatform.isAndroid && AppPlatform.getSdkIntValue() >= 33;
var status = isAndroid33
? await PermissionDialog.request(Permission.photos)
: await PermissionDialog.request(Permission.storage);
if (status) {
selectImage();
}
}
@override
void onReady() {
// TODO: implement onReady
super.onReady();
}
@override
void onInit() {
// TODO: implement onInit
super.onInit();
getUserInfoRequest();
}
@override
void onClose() {
// TODO: implement onClose
}
}