修改拍照头像上传慢的问题

This commit is contained in:
魏少阳 2024-06-03 15:23:03 +08:00
parent 0fe024bc9f
commit 0e38550b94
5 changed files with 38 additions and 30 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -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<void> 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<void> 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<String, dynamic> 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<void> 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<void> 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<void> 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<void> _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<void> _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
}
}

View File

@ -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';

View File

@ -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<MinePersonInfoData> 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; //
}

View File

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