From 0e38550b948202e56666b943517db90471fb1709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=B0=91=E9=98=B3?= <786612630@qq.com> Date: Mon, 3 Jun 2024 15:23:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8B=8D=E7=85=A7=E5=A4=B4?= =?UTF-8?q?=E5=83=8F=E4=B8=8A=E4=BC=A0=E6=85=A2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 10244 -> 8196 bytes .../minePersonInfo_logic.dart | 52 ++++++++++-------- .../minePersonInfo_page.dart | 2 +- .../minePersonInfo_state.dart | 11 ++-- pubspec.yaml | 3 +- 5 files changed, 38 insertions(+), 30 deletions(-) diff --git a/.DS_Store b/.DS_Store index f7e55907e64996cff1c8d6490166ef5cbccae3b2..fdfcd7d0d25a05b4ccfcfeffa86d37533538e7af 100755 GIT binary patch delta 291 zcmZn(XmOBWU|?W$DortDU;r^WfEYvza8E20o2Vx_*+7Lw6v$@~24Y5_I73dlVQ_MO zZoy_j4l$O^3LF!eIf3FJz`+d>Q{#Ec%qYB>N8&cqF{~n38au@bMswXl5+BsK<1_P@AqJ1Ip&D2B87m8f((cgf%+IaWiJ59$$SFR xlUr0OH&zHU3o?Vmf!^c>60RVx0-gPxc{0C>=VX5#4i2DiK%u~}Ii6<@GXTA?Jd*$b literal 10244 zcmeHNdvF^^8Qvmpi{zgfDAA^%A@5qfdZuz2&L&jr<4wqSK*HgGi7Mu+r5(`$ucug z2x-x3_P*P1_uISuZtwQ@`&NuGbfwi6#=?v-nKGBk62{6GGgeD7H}QI&=cO{zfbt5; zbgnR_GlQvyotcgs^IDe_B@dK5a4C5}qMPCGZ#m@(7H8?)_t%OuCY_2;8@lZ@H$Mic zth}Ofk?dQ%#D7_6*X~_?*ZU`w>Wr?@j@D@yQT=9(bj$2S$})`omaX${#zr0On8WMlRgI3@R?6uXosH_$ zzuQVl+u8w*I@L2;4|Q$V6!;jvb4!;gRn?c*EMIX&cuhl7+twYOqX{dS)J(@7GGcMf z7|FPIe^8|!x>Fh*)j^x?;t*HtwN(8^ois;vQyny8N$oIK_s48!-?V0G>e<>W120<{ z^oNG1fp%4vt#|=$cRE0*LELzuHAxh3SHgQjjTK%%W{3z zEA^2E_f!m|KGN)#eDsYEvR2l^`q>edVkg+`>^90;J^Tbe$1m|a_x2<{QF-cjMfQl_tE!za;+7>= zoJtmBHvKf_FgreD(?Y~2GP^fBksrxUlT8auwHe2*D+X5F*hz@c^L6$aR<_zAI;V~45tCL+=G-rsovUDtYpyYx1 z9;hHy4pt~Y5tYOUk_4$H2~fRs;8f0-C|1$!Ld3FY79!?zo#4pm*tq{t4&k^M{ANO# zM{A0*tqbt|^wKLrtJiO6-LgH>+qd@>XF22X*Z5atxkn)<87Hu6I-J&|e4LdCHgLAu zB{IRn*4bW0({cT#wC)^N>WP|&Yt#kneMD69h?1xY)&wM>_RVoQSJxHn;gqM4qVbyzb_I9K z^0++}OKJON2+wCN`ej)VSJHD<*Q@G|l@i_JkaLKJwOw#d|hKwC1Rn@Ud?mKNZYtE!#><-5|S>S?m_}7Irr=ulv~j z><8=-_BeZrJ;R=5e`U|H=TQbfs<9HQu>noQ!dh?*wqXaZ#U8=JhKYk6g#nW|n1hoZ z|9ZXPUU%S5+=UO~6h4fP;55D{c-J@aeLRSV@IyR~-{5Kd7U%ICp2y#%Dk&hXmexpX zr6#FaYLzxgJEdLHerZgKOOw)+`#qWCW;f)2U!>zy&ijP8p+ON^I9>d8qtF6H7Wyyw z*R2#%ppe3UcBcP`J;t7(D8qU7EGn@C3PMcK2g1hB1n99K<1Ln1qg3 z(p-0t!7&`i&3G+dhd1DjcoXixJMk{O8+YR#n(ZH=`F9&KJ()f`u}_`HQH;;c_|KNGrU~9AmO2N^!Aie*bv%uF>4Oq}9{o z1ykfTp=9R4htG88*Q@`uetPOc-_ofk$n?T>r=56z+ICW;YhqD$oB}uwA&w-KhUs%? zP-HU65eSug2#q+Do7j*D^Q459W0VBxX2h?FO4Ib)Ao__>Fw3A`66`3o$iM1RI0P+8I|IHBG_5rqZ~~Czn%?Swzko1=y;)F(3}zFp!SC1Fd{HGG&nr+ z;@P1f^uDr=Z%uUU=-PSxfPkg{26|VjmJxst6hY~$0^#B)J+LaUx)@4d7kGIAN^kUU z%tz^g7XPLKlpbjJZ=HwI12z8bg(y96U7&LzlumWM^HDl!`--D<8ugx4fj}Ng=V(8$ zKX70{luqAEk>*hPzp@?jQ-b8bW`AIRq3sX}6#}l*AV`2Ej5;*nYJ%n)36%Gsm!Qi5 z0ap%VLTrqfn5M0f3|>RqBDWG?;ZWsH0af^h$j4|)ghQ0C;(h`t58-Ec6zA|1{)lJr zCkfJGsYY5Zt&l=eSh`B8m)fN*Qbg*L2BZ;pJab@t%p0I5B)*#GC(ivTg?aqHcj5hi z(WrDNd7$Khm!=0$-V^QVqOp0g^?9S@vGy?KBb0gK?PgsmOz7Z+;FFhTh6h7 diff --git a/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart b/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart index e6c6b080..00346532 100755 --- a/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart +++ b/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_logic.dart @@ -1,14 +1,19 @@ import 'dart:async'; import 'dart:io'; +import 'dart:typed_data'; +import 'package:flutter_image_compress/flutter_image_compress.dart'; 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/login/login/entity/LoginData.dart'; +import 'package:star_lock/login/login/entity/LoginEntity.dart'; +import 'package:star_lock/main/lockDetail/passwordKey/passwordKeyList/passwordKeyListEntity.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/widget/permission/permission_dialog.dart'; import '../../../../network/api_repository.dart'; import '../../../../tools/baseGetXController.dart'; +import '../../../app_settings/app_settings.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/storage.dart'; import 'minePersonGetUploadFileInfo_entity.dart'; @@ -18,7 +23,7 @@ class MinePersonInfoLogic extends BaseGetXController { //用户信息 Future getUserInfoRequest() async { - MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo(); + final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo(); if (entity.errorCode!.codeIsSuccessful) { state.mineInfoData.value = entity.data!; state.headUrl.value = state.mineInfoData.value.headUrl!; @@ -27,7 +32,7 @@ class MinePersonInfoLogic extends BaseGetXController { //上传头像 先获取upToken 再调用updateUserInfo Future getUpTokenRequest(String filename, int size) async { - var entity = await ApiRepository.to.getUpToken( + final MinePersonGetUploadFileInfoEntity entity = await ApiRepository.to.getUpToken( userId: state.mineInfoData.value.uid!.toString(), filename: filename, size: size); @@ -41,18 +46,18 @@ class MinePersonInfoLogic extends BaseGetXController { MinePersonGetUploadFileInfoEntity minePersonGetUploadFileInfoEntity) async { // Map user = minePersonGetUploadFileInfoEntity.data!.formData!; - var bytes = File(state.image!.path); - var enc = await bytes.readAsBytes(); + final File bytes = File(state.image!.path); + final Uint8List enc = await bytes.readAsBytes(); // user[minePersonGetUploadFileInfoEntity.data!.fileField!] = enc; - final form = FormData(minePersonGetUploadFileInfoEntity.data!.formData!); + final FormData form = FormData(minePersonGetUploadFileInfoEntity.data!.formData!); form.files.add(MapEntry( minePersonGetUploadFileInfoEntity.data!.fileField!, MultipartFile(enc, filename: - minePersonGetUploadFileInfoEntity.data!.formData!["key"]))); + minePersonGetUploadFileInfoEntity.data!.formData!['key']))); - var entity = await ApiRepository.to.uploadFile( + final LoginEntity entity = await ApiRepository.to.uploadFile( url: minePersonGetUploadFileInfoEntity.data!.uploadUrl!, body: form); if (entity.errorCode! == -1) { // 没有返回 返回null成功 @@ -62,15 +67,15 @@ class MinePersonInfoLogic extends BaseGetXController { //更新个人信息-头像 Future updateUserInfoRequest(String headUrl) async { - var 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; - final loginData = await Storage.getLoginData(); + final LoginData? loginData = await Storage.getLoginData(); loginData!.headUrl = headUrl; await Storage.saveLoginData(loginData); eventBus.fire(MineInfoChangeRefreshUI()); - showToast("上传成功".tr); + showToast('上传成功'.tr); } } @@ -86,34 +91,38 @@ class MinePersonInfoLogic extends BaseGetXController { ///拍摄照片 Future selectCamera() async { - XFile? photo = await state.imagePicker.pickImage( - source: ImageSource.camera, preferredCameraDevice: CameraDevice.rear); + final XFile? photo = await state.imagePicker.pickImage( + source: ImageSource.camera, + maxHeight: 250, + maxWidth: 250, + imageQuality: 80 + ); if (photo != null) { state.image = photo; - var bytes = File(state.image!.path); - var enc = await bytes.readAsBytes(); + final File bytes = File(state.image!.path); + final Uint8List enc = await bytes.readAsBytes(); getUpTokenRequest(state.image!.name, enc.length); } } ///从相册选取 Future selectImage() async { - XFile? image = await state.imagePicker.pickImage( + final 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(); + final File bytes = File(state.image!.path); + final Uint8List enc = await bytes.readAsBytes(); getUpTokenRequest(state.image!.name, enc.length); } } //权限判断 访问相机 Future _checkCameraPermission() async { - var status = await PermissionDialog.request(Permission.camera); + final bool status = await PermissionDialog.request(Permission.camera); if (status) { selectCamera(); } @@ -121,7 +130,7 @@ class MinePersonInfoLogic extends BaseGetXController { //权限判断 访问相册 Future _checkPhotoPermission() async { - var status = await PermissionDialog.requestPhotos(); + final bool status = await PermissionDialog.requestPhotos(); if (status) { selectImage(); } @@ -129,13 +138,11 @@ class MinePersonInfoLogic extends BaseGetXController { @override void onReady() { - // TODO: implement onReady super.onReady(); } @override void onInit() { - // TODO: implement onInit super.onInit(); getUserInfoRequest(); @@ -143,6 +150,5 @@ class MinePersonInfoLogic extends BaseGetXController { @override void onClose() { - // TODO: implement onClose } } diff --git a/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart b/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart index d1f59d01..552d105e 100755 --- a/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart +++ b/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_page.dart @@ -1,7 +1,7 @@ + import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; -import 'package:permission_handler/permission_handler.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/flavors.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart'; diff --git a/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_state.dart b/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_state.dart index c884f770..2862e452 100755 --- a/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_state.dart +++ b/lib/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_state.dart @@ -1,12 +1,13 @@ + import 'package:get/get.dart'; import 'package:image_picker/image_picker.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart'; class MinePersonInfoState { - final mineInfoData = MinePersonInfoData().obs; - final headUrl = ''.obs; + final Rx mineInfoData = MinePersonInfoData().obs; + final RxString headUrl = ''.obs; - var typeStr = '2'.obs; //2:上传头像 + RxString typeStr = '2'.obs; //2:上传头像 // ImagePicker获取内容后返回的对象是XFile XFile? image; @@ -14,8 +15,8 @@ class MinePersonInfoState { // 使用ImagePicker前必须先实例化 final ImagePicker imagePicker = ImagePicker(); - var hasPhotoPermission = false.obs; //是否有相册权限 - var hasCameraPermission = false.obs; //是否有相机权限 + RxBool hasPhotoPermission = false.obs; //是否有相册权限 + RxBool hasCameraPermission = false.obs; //是否有相机权限 } diff --git a/pubspec.yaml b/pubspec.yaml index ec8ee1c1..e7502936 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -205,7 +205,8 @@ dependencies: file_picker: ^5.3.1 # 错误日志监控 flutter_bugly_plugin: ^0.0.9 - + # 图片压缩 + flutter_image_compress: ^2.3.0 dependency_overrides: #强制设置google_maps_flutter_ios 为 2.5.2