diff --git a/.DS_Store b/.DS_Store index f7e55907..fdfcd7d0 100755 Binary files a/.DS_Store and b/.DS_Store differ 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