import 'dart:async'; import 'dart:io'; import 'package:get/get.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_entity.dart'; import 'package:star_lock/mine/minePersonInfo/minePersonInfoPage/minePersonInfo_state.dart'; import '../../../../network/api_repository.dart'; import '../../../../tools/baseGetXController.dart'; import '../../../tools/eventBusEventManage.dart'; import '../../../tools/storage.dart'; import 'minePersonGetUploadFileInfo_entity.dart'; class MinePersonInfoLogic extends BaseGetXController { MinePersonInfoState state = MinePersonInfoState(); //用户信息 Future getUserInfoRequest() async { MinePersonInfoEntity entity = await ApiRepository.to.getUserInfo(); if (entity.errorCode!.codeIsSuccessful) { state.mineInfoData.value = entity.data!; state.headUrl.value = state.mineInfoData.value.headUrl!; } } //上传头像 先获取upToken 再调用updateUserInfo Future getUpTokenRequest(String filename, int size) async { var entity = await ApiRepository.to.getUpToken( userId: state.mineInfoData.value.uid!.toString(), filename: filename, size: size); if (entity.errorCode!.codeIsSuccessful) { uploadFile(entity); } } // 上传头像 void uploadFile(MinePersonGetUploadFileInfoEntity minePersonGetUploadFileInfoEntity) async { Map user = minePersonGetUploadFileInfoEntity.data!.formData!; var bytes = File(state.image!.path); var enc = await bytes.readAsBytes(); user[minePersonGetUploadFileInfoEntity.data!.fileField!] = enc; final form = FormData({ 'file': MultipartFile(enc, filename: minePersonGetUploadFileInfoEntity.data!.formData!["key"]), }); var entity = await ApiRepository.to.uploadFile(url: minePersonGetUploadFileInfoEntity.data!.uploadUrl!, body: form); if (entity.errorCode! == -1) { // 没有返回 返回null成功 updateUserInfoRequest(minePersonGetUploadFileInfoEntity.data!.fileUrl!); } } //更新个人信息-头像 Future updateUserInfoRequest(String headUrl) async { var 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(); loginData!.headUrl = headUrl; await Storage.saveLoginData(loginData); eventBus.fire(MineInfoChangeRefreshUI()); showToast("上传成功".tr); } } @override void onReady() { // TODO: implement onReady super.onReady(); } @override void onInit() { // TODO: implement onInit super.onInit(); getUserInfoRequest(); } @override void onClose() { // TODO: implement onClose } }