修改拍照头像上传慢的问题
This commit is contained in:
parent
0fe024bc9f
commit
0e38550b94
@ -1,14 +1,19 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
import 'dart:typed_data';
|
||||||
|
import 'package:flutter_image_compress/flutter_image_compress.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';
|
||||||
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_entity.dart';
|
||||||
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_state.dart';
|
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_state.dart';
|
||||||
import 'package:star_lock/widget/permission/permission_dialog.dart';
|
import 'package:star_lock/widget/permission/permission_dialog.dart';
|
||||||
import '../../../../network/api_repository.dart';
|
import '../../../../network/api_repository.dart';
|
||||||
import '../../../../tools/baseGetXController.dart';
|
import '../../../../tools/baseGetXController.dart';
|
||||||
|
import '../../../app_settings/app_settings.dart';
|
||||||
import '../../../tools/eventBusEventManage.dart';
|
import '../../../tools/eventBusEventManage.dart';
|
||||||
import '../../../tools/storage.dart';
|
import '../../../tools/storage.dart';
|
||||||
import 'minePersonGetUploadFileInfo_entity.dart';
|
import 'minePersonGetUploadFileInfo_entity.dart';
|
||||||
@ -18,7 +23,7 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//用户信息
|
//用户信息
|
||||||
Future<void> getUserInfoRequest() async {
|
Future<void> getUserInfoRequest() async {
|
||||||
MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo();
|
final MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo();
|
||||||
if (entity.errorCode!.codeIsSuccessful) {
|
if (entity.errorCode!.codeIsSuccessful) {
|
||||||
state.mineInfoData.value = entity.data!;
|
state.mineInfoData.value = entity.data!;
|
||||||
state.headUrl.value = state.mineInfoData.value.headUrl!;
|
state.headUrl.value = state.mineInfoData.value.headUrl!;
|
||||||
@ -27,7 +32,7 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//上传头像 先获取upToken 再调用updateUserInfo
|
//上传头像 先获取upToken 再调用updateUserInfo
|
||||||
Future<void> getUpTokenRequest(String filename, int size) async {
|
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(),
|
userId: state.mineInfoData.value.uid!.toString(),
|
||||||
filename: filename,
|
filename: filename,
|
||||||
size: size);
|
size: size);
|
||||||
@ -41,18 +46,18 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
MinePersonGetUploadFileInfoEntity
|
MinePersonGetUploadFileInfoEntity
|
||||||
minePersonGetUploadFileInfoEntity) async {
|
minePersonGetUploadFileInfoEntity) async {
|
||||||
// Map<String, dynamic> user = minePersonGetUploadFileInfoEntity.data!.formData!;
|
// Map<String, dynamic> user = minePersonGetUploadFileInfoEntity.data!.formData!;
|
||||||
var bytes = File(state.image!.path);
|
final File bytes = File(state.image!.path);
|
||||||
var enc = await bytes.readAsBytes();
|
final Uint8List enc = await bytes.readAsBytes();
|
||||||
// user[minePersonGetUploadFileInfoEntity.data!.fileField!] = enc;
|
// user[minePersonGetUploadFileInfoEntity.data!.fileField!] = enc;
|
||||||
|
|
||||||
final form = FormData(minePersonGetUploadFileInfoEntity.data!.formData!);
|
final FormData form = FormData(minePersonGetUploadFileInfoEntity.data!.formData!);
|
||||||
form.files.add(MapEntry(
|
form.files.add(MapEntry(
|
||||||
minePersonGetUploadFileInfoEntity.data!.fileField!,
|
minePersonGetUploadFileInfoEntity.data!.fileField!,
|
||||||
MultipartFile(enc,
|
MultipartFile(enc,
|
||||||
filename:
|
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);
|
url: minePersonGetUploadFileInfoEntity.data!.uploadUrl!, body: form);
|
||||||
if (entity.errorCode! == -1) {
|
if (entity.errorCode! == -1) {
|
||||||
// 没有返回 返回null成功
|
// 没有返回 返回null成功
|
||||||
@ -62,15 +67,15 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//更新个人信息-头像
|
//更新个人信息-头像
|
||||||
Future<void> updateUserInfoRequest(String headUrl) async {
|
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) {
|
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;
|
||||||
final loginData = await Storage.getLoginData();
|
final LoginData? loginData = await Storage.getLoginData();
|
||||||
loginData!.headUrl = headUrl;
|
loginData!.headUrl = headUrl;
|
||||||
await Storage.saveLoginData(loginData);
|
await Storage.saveLoginData(loginData);
|
||||||
eventBus.fire(MineInfoChangeRefreshUI());
|
eventBus.fire(MineInfoChangeRefreshUI());
|
||||||
showToast("上传成功".tr);
|
showToast('上传成功'.tr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,34 +91,38 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
|
|
||||||
///拍摄照片
|
///拍摄照片
|
||||||
Future<void> selectCamera() async {
|
Future<void> selectCamera() async {
|
||||||
XFile? photo = await state.imagePicker.pickImage(
|
final XFile? photo = await state.imagePicker.pickImage(
|
||||||
source: ImageSource.camera, preferredCameraDevice: CameraDevice.rear);
|
source: ImageSource.camera,
|
||||||
|
maxHeight: 250,
|
||||||
|
maxWidth: 250,
|
||||||
|
imageQuality: 80
|
||||||
|
);
|
||||||
if (photo != null) {
|
if (photo != null) {
|
||||||
state.image = photo;
|
state.image = photo;
|
||||||
var bytes = File(state.image!.path);
|
final File bytes = File(state.image!.path);
|
||||||
var enc = await bytes.readAsBytes();
|
final Uint8List enc = await bytes.readAsBytes();
|
||||||
getUpTokenRequest(state.image!.name, enc.length);
|
getUpTokenRequest(state.image!.name, enc.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
///从相册选取
|
///从相册选取
|
||||||
Future<void> selectImage() async {
|
Future<void> selectImage() async {
|
||||||
XFile? image = await state.imagePicker.pickImage(
|
final XFile? image = await state.imagePicker.pickImage(
|
||||||
source: ImageSource.gallery,
|
source: ImageSource.gallery,
|
||||||
maxHeight: 250,
|
maxHeight: 250,
|
||||||
maxWidth: 250,
|
maxWidth: 250,
|
||||||
);
|
);
|
||||||
if (image != null) {
|
if (image != null) {
|
||||||
state.image = image;
|
state.image = image;
|
||||||
var bytes = File(state.image!.path);
|
final File bytes = File(state.image!.path);
|
||||||
var enc = await bytes.readAsBytes();
|
final Uint8List enc = await bytes.readAsBytes();
|
||||||
getUpTokenRequest(state.image!.name, enc.length);
|
getUpTokenRequest(state.image!.name, enc.length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//权限判断 访问相机
|
//权限判断 访问相机
|
||||||
Future<void> _checkCameraPermission() async {
|
Future<void> _checkCameraPermission() async {
|
||||||
var status = await PermissionDialog.request(Permission.camera);
|
final bool status = await PermissionDialog.request(Permission.camera);
|
||||||
if (status) {
|
if (status) {
|
||||||
selectCamera();
|
selectCamera();
|
||||||
}
|
}
|
||||||
@ -121,7 +130,7 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
|
|
||||||
//权限判断 访问相册
|
//权限判断 访问相册
|
||||||
Future<void> _checkPhotoPermission() async {
|
Future<void> _checkPhotoPermission() async {
|
||||||
var status = await PermissionDialog.requestPhotos();
|
final bool status = await PermissionDialog.requestPhotos();
|
||||||
if (status) {
|
if (status) {
|
||||||
selectImage();
|
selectImage();
|
||||||
}
|
}
|
||||||
@ -129,13 +138,11 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void onReady() {
|
void onReady() {
|
||||||
// TODO: implement onReady
|
|
||||||
super.onReady();
|
super.onReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
// TODO: implement onInit
|
|
||||||
super.onInit();
|
super.onInit();
|
||||||
|
|
||||||
getUserInfoRequest();
|
getUserInfoRequest();
|
||||||
@ -143,6 +150,5 @@ class MinePersonInfoLogic extends BaseGetXController {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
// TODO: implement onClose
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||||
import 'package:get/get.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/app_settings/app_colors.dart';
|
||||||
import 'package:star_lock/flavors.dart';
|
import 'package:star_lock/flavors.dart';
|
||||||
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
|
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
|
||||||
|
|||||||
@ -1,12 +1,13 @@
|
|||||||
|
|
||||||
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:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
|
import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart';
|
||||||
|
|
||||||
class MinePersonInfoState {
|
class MinePersonInfoState {
|
||||||
final mineInfoData = MinePersonInfoData().obs;
|
final Rx<MinePersonInfoData> mineInfoData = MinePersonInfoData().obs;
|
||||||
final headUrl = ''.obs;
|
final RxString headUrl = ''.obs;
|
||||||
|
|
||||||
var typeStr = '2'.obs; //2:上传头像
|
RxString typeStr = '2'.obs; //2:上传头像
|
||||||
|
|
||||||
// ImagePicker获取内容后返回的对象是XFile
|
// ImagePicker获取内容后返回的对象是XFile
|
||||||
XFile? image;
|
XFile? image;
|
||||||
@ -14,8 +15,8 @@ class MinePersonInfoState {
|
|||||||
// 使用ImagePicker前必须先实例化
|
// 使用ImagePicker前必须先实例化
|
||||||
final ImagePicker imagePicker = ImagePicker();
|
final ImagePicker imagePicker = ImagePicker();
|
||||||
|
|
||||||
var hasPhotoPermission = false.obs; //是否有相册权限
|
RxBool hasPhotoPermission = false.obs; //是否有相册权限
|
||||||
var hasCameraPermission = false.obs; //是否有相机权限
|
RxBool hasCameraPermission = false.obs; //是否有相机权限
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -205,7 +205,8 @@ dependencies:
|
|||||||
file_picker: ^5.3.1
|
file_picker: ^5.3.1
|
||||||
# 错误日志监控
|
# 错误日志监控
|
||||||
flutter_bugly_plugin: ^0.0.9
|
flutter_bugly_plugin: ^0.0.9
|
||||||
|
# 图片压缩
|
||||||
|
flutter_image_compress: ^2.3.0
|
||||||
|
|
||||||
dependency_overrides:
|
dependency_overrides:
|
||||||
#强制设置google_maps_flutter_ios 为 2.5.2
|
#强制设置google_maps_flutter_ios 为 2.5.2
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user