Merge branch 'develop_liyi' into 'canary_release'
Develop liyi See merge request StarlockTeam/app-starlock!10
This commit is contained in:
commit
fbfa027e5a
@ -151,8 +151,8 @@ create-release:
|
|||||||
${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/StarLock/${StarLock_VERSION}/StarLock-${StarLock_VERSION}-*"
|
${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
|
- '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"'
|
"${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
|
- '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-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
|
- '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"'
|
"${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
|
- 'curl -i --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file build/app/outputs/flutter-apk/starlock-sky-release-${CI_COMMIT_TAG}.aab
|
||||||
|
|||||||
@ -1153,6 +1153,7 @@
|
|||||||
"是否要远程开锁": "Do you want to unlock remotely",
|
"是否要远程开锁": "Do you want to unlock remotely",
|
||||||
"国家地区的选择将影响数据安全,你当前选择的是": "The choice of country or region will affect data security. What is your current choice",
|
"国家地区的选择将影响数据安全,你当前选择的是": "The choice of country or region will affect data security. What is your current choice",
|
||||||
"请确认后再继续": "Please confirm before continuing",
|
"请确认后再继续": "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",
|
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "The activation and deactivation of this feature can only be done through Bluetooth on the phone near the lock",
|
||||||
"网关添加成功": "Gateway added successfully"
|
"网关添加成功": "Gateway added successfully"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1160,6 +1160,7 @@
|
|||||||
"繁体中文(中国香港)": "繁体中文(中国香港)",
|
"繁体中文(中国香港)": "繁体中文(中国香港)",
|
||||||
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
|
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
|
||||||
"请确认后再继续": "请确认后再继续",
|
"请确认后再继续": "请确认后再继续",
|
||||||
|
"需要相机权限": "需要相机权限",
|
||||||
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行",
|
"此功能的开启和关闭只能在锁附近通过手机蓝牙进行": "此功能的开启和关闭只能在锁附近通过手机蓝牙进行",
|
||||||
"网关添加成功": "网关添加成功"
|
"网关添加成功": "网关添加成功"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1162,5 +1162,6 @@
|
|||||||
"繁体中文(中国香港)": "繁体中文(中国香港)",
|
"繁体中文(中国香港)": "繁体中文(中国香港)",
|
||||||
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
|
"国家地区的选择将影响数据安全,你当前选择的是": "国家地区的选择将影响数据安全,你当前选择的是",
|
||||||
"请确认后再继续": "请确认后再继续",
|
"请确认后再继续": "请确认后再继续",
|
||||||
|
"需要相机权限": "需要相机权限",
|
||||||
"网关添加成功": "网关添加成功"
|
"网关添加成功": "网关添加成功"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:image_picker/image_picker.dart';
|
import 'package:image_picker/image_picker.dart';
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
@ -31,27 +31,30 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//上传头像 先获取upToken 再调用updateUserInfo
|
//上传头像 先获取upToken 再调用updateUserInfo
|
||||||
Future<void> getUpTokenRequest(String filename, int size) async {
|
Future<void> getUpTokenRequest(String filename, int size) async {
|
||||||
final MinePersonGetUploadFileInfoEntity entity = await ApiRepository.to.getUpToken(
|
final MinePersonGetUploadFileInfoEntity entity = await ApiRepository.to
|
||||||
userId: state.mineInfoData.value.uid!.toString(),
|
.getUpToken(
|
||||||
filename: filename,
|
userId: state.mineInfoData.value.uid!.toString(),
|
||||||
size: size);
|
filename: filename,
|
||||||
|
size: size);
|
||||||
if (entity.errorCode!.codeIsSuccessful) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
uploadFile(entity);
|
uploadFile(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 上传头像
|
// 上传头像
|
||||||
Future<void> uploadFile(MinePersonGetUploadFileInfoEntity minePersonGetUploadFileInfoEntity) async {
|
Future<void> uploadFile(
|
||||||
|
MinePersonGetUploadFileInfoEntity
|
||||||
|
minePersonGetUploadFileInfoEntity) async {
|
||||||
final File bytes = File(state.image!.path);
|
final File bytes = File(state.image!.path);
|
||||||
final Uint8List enc = await bytes.readAsBytes();
|
final Uint8List enc = await bytes.readAsBytes();
|
||||||
|
|
||||||
final FormData form = FormData(minePersonGetUploadFileInfoEntity.data!.formData!);
|
final FormData form =
|
||||||
form.files.add(
|
FormData(minePersonGetUploadFileInfoEntity.data!.formData!);
|
||||||
MapEntry(
|
form.files.add(MapEntry(
|
||||||
minePersonGetUploadFileInfoEntity.data!.fileField!,
|
minePersonGetUploadFileInfoEntity.data!.fileField!,
|
||||||
MultipartFile(enc, filename: minePersonGetUploadFileInfoEntity.data!.formData!['key'])
|
MultipartFile(enc,
|
||||||
)
|
filename:
|
||||||
);
|
minePersonGetUploadFileInfoEntity.data!.formData!['key'])));
|
||||||
|
|
||||||
final LoginEntity entity = await ApiRepository.to.uploadFile(
|
final LoginEntity entity = await ApiRepository.to.uploadFile(
|
||||||
url: minePersonGetUploadFileInfoEntity.data!.uploadUrl!, body: form);
|
url: minePersonGetUploadFileInfoEntity.data!.uploadUrl!, body: form);
|
||||||
@ -63,7 +66,8 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//更新个人信息-头像
|
//更新个人信息-头像
|
||||||
Future<void> updateUserInfoRequest(String headUrl) async {
|
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) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
state.headUrl.value = headUrl;
|
state.headUrl.value = headUrl;
|
||||||
state.mineInfoData.value.headUrl = state.headUrl.value;
|
state.mineInfoData.value.headUrl = state.headUrl.value;
|
||||||
@ -88,9 +92,9 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
///拍摄照片
|
///拍摄照片
|
||||||
Future<void> selectCamera() async {
|
Future<void> selectCamera() async {
|
||||||
final XFile? photo = await state.imagePicker.pickImage(
|
final XFile? photo = await state.imagePicker.pickImage(
|
||||||
source: ImageSource.camera,
|
source: ImageSource.camera,
|
||||||
maxHeight: 250,
|
maxHeight: 250,
|
||||||
maxWidth: 250,
|
maxWidth: 250,
|
||||||
);
|
);
|
||||||
if (photo != null) {
|
if (photo != null) {
|
||||||
state.image = photo;
|
state.image = photo;
|
||||||
@ -117,16 +121,68 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//权限判断 访问相机
|
//权限判断 访问相机
|
||||||
Future<void> _checkCameraPermission() async {
|
Future<void> _checkCameraPermission() async {
|
||||||
final bool status = await PermissionDialog.request(Permission.camera);
|
final PermissionStatus status = await Permission.camera.status;
|
||||||
if (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();
|
selectCamera();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//权限判断 访问相册
|
//权限判断 访问相册
|
||||||
Future<void> _checkPhotoPermission() async {
|
Future<void> _checkPhotoPermission() async {
|
||||||
final bool status = await PermissionDialog.requestPhotos();
|
final PermissionStatus status = await Permission.photos.status;
|
||||||
if (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();
|
selectImage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -123,6 +123,10 @@ class StartChartManage {
|
|||||||
|
|
||||||
// 星图服务初始化
|
// 星图服务初始化
|
||||||
Future<void> init() async {
|
Future<void> init() async {
|
||||||
|
if (F.isXHJ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 判断是否登录账户
|
// 判断是否登录账户
|
||||||
final loginData = await Storage.getLoginData();
|
final loginData = await Storage.getLoginData();
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user