Merge branch 'develop_liyi' into 'canary_release'

Develop liyi

See merge request StarlockTeam/app-starlock!10
This commit is contained in:
李仪 2025-03-31 01:13:06 +00:00
commit fbfa027e5a
6 changed files with 86 additions and 23 deletions

View File

@ -151,8 +151,8 @@ create-release:
${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/StarLock-${StarLock_VERSION}-*"
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj-release-${CI_COMMIT_TAG}.apk
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj-release-${CI_COMMIT_TAG}.apk"'
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj-release-${CI_COMMIT_TAG}.aab
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj-release-${CI_COMMIT_TAG}.aab"'
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-xhj_bundle-release-${CI_COMMIT_TAG}.aab
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-xhj_bundle-release-${CI_COMMIT_TAG}.aab"'
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.apk
"${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/starlock-sky-release-${CI_COMMIT_TAG}.apk"'
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.aab

View File

@ -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"
}

View File

@ -1160,6 +1160,7 @@
"繁体中文(中国香港)": "繁体中文(中国香港)",
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
"请确认后再继续": "请确认后再继续",
"需要相机权限": "需要相机权限",
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行",
"网关添加成功": "网关添加成功"
}

View File

@ -1162,5 +1162,6 @@
"繁体中文(中国香港)": "繁体中文(中国香港)",
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
"请确认后再继续": "请确认后再继续",
"需要相机权限": "需要相机权限",
"网关添加成功": "网关添加成功"
}

View File

@ -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();
}
}

View File

@ -123,6 +123,10 @@ class StartChartManage {
//
Future<void> init() async {
if (F.isXHJ) {
return;
}
//
final loginData = await Storage.getLoginData();