|
|
@ -1,11 +1,13 @@ |
|
|
import 'package:get/get.dart'; |
|
|
import 'package:get/get.dart'; |
|
|
import 'package:get_storage/get_storage.dart'; |
|
|
import 'package:get_storage/get_storage.dart'; |
|
|
import 'package:flutter/material.dart'; |
|
|
import 'package:flutter/material.dart'; |
|
|
|
|
|
import 'package:http/http.dart'; |
|
|
import 'package:image_picker/image_picker.dart'; |
|
|
import 'package:image_picker/image_picker.dart'; |
|
|
import 'package:logger/logger.dart'; |
|
|
import 'package:logger/logger.dart'; |
|
|
import '../../../data/models/user_model.dart'; |
|
|
import '../../../data/models/user_Info.dart'; |
|
|
import '../../settings/controllers/settings_controller.dart'; |
|
|
import '../../settings/controllers/settings_controller.dart'; |
|
|
import 'dart:io'; |
|
|
import 'dart:io'; |
|
|
|
|
|
import 'dart:convert'; |
|
|
import 'package:flutter_image_compress/flutter_image_compress.dart'; |
|
|
import 'package:flutter_image_compress/flutter_image_compress.dart'; |
|
|
|
|
|
|
|
|
class ProfileController extends GetxController { |
|
|
class ProfileController extends GetxController { |
|
|
@ -20,7 +22,8 @@ class ProfileController extends GetxController { |
|
|
static const String userKey = 'user_info'; |
|
|
static const String userKey = 'user_info'; |
|
|
final _storage = GetStorage(); |
|
|
final _storage = GetStorage(); |
|
|
final ImagePicker _picker = ImagePicker(); |
|
|
final ImagePicker _picker = ImagePicker(); |
|
|
final Rx<UserModel> userInfo = UserModel.defaultUser().obs; |
|
|
final Rx<User> userInfo = User.instance.obs; |
|
|
|
|
|
//final RxString localAvatar = ''.obs; |
|
|
|
|
|
|
|
|
// 使用响应式变量 |
|
|
// 使用响应式变量 |
|
|
final currentLanguage = 'zh'.obs; |
|
|
final currentLanguage = 'zh'.obs; |
|
|
@ -111,10 +114,48 @@ class ProfileController extends GetxController { |
|
|
// _isEditing.value = !_isEditing.value; |
|
|
// _isEditing.value = !_isEditing.value; |
|
|
// } |
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
// 更新用户信息到后端 |
|
|
|
|
|
Future<void> _syncWithBackend() async { |
|
|
|
|
|
try { |
|
|
|
|
|
// 准备数据 |
|
|
|
|
|
Map<String, dynamic> data = { |
|
|
|
|
|
"image": "", // 默认空字符串 |
|
|
|
|
|
"name": userInfo.value.name, |
|
|
|
|
|
"language": currentLanguage.value, |
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// 如果有头像,转换为base64 |
|
|
|
|
|
if (userInfo.value.avatar.isNotEmpty) { |
|
|
|
|
|
File imageFile = File(userInfo.value.avatar); |
|
|
|
|
|
List<int> imageBytes = await imageFile.readAsBytes(); |
|
|
|
|
|
String base64Image = base64Encode(imageBytes); |
|
|
|
|
|
data["image"] = base64Image; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 调用API |
|
|
|
|
|
final response = await GetConnect().post( |
|
|
|
|
|
'https://www.deapsound.com:443/api/home/user_setting', |
|
|
|
|
|
headers: { |
|
|
|
|
|
'accept': 'application/json', |
|
|
|
|
|
'Content-Type': 'application/json', |
|
|
|
|
|
}, |
|
|
|
|
|
data, |
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
if (response.statusCode != 200) { |
|
|
|
|
|
throw '更新失败:${response.body}'; |
|
|
|
|
|
} |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
Logger().e('同步到后端失败: $e'); |
|
|
|
|
|
Get.snackbar('错误','同步到服务器失败,请重试'); |
|
|
|
|
|
throw e; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
void loadUserInfo() { |
|
|
void loadUserInfo() { |
|
|
final userJson = _storage.read(userKey); |
|
|
final userJson = _storage.read(userKey); |
|
|
if (userJson != null) { |
|
|
if (userJson != null) { |
|
|
userInfo.value = UserModel.fromJson(userJson); |
|
|
userInfo.value = User.instance; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -162,7 +203,8 @@ class ProfileController extends GetxController { |
|
|
user.avatar = image.path; |
|
|
user.avatar = image.path; |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
await saveUserInfo(); |
|
|
await saveUserInfo();//保存到本地 |
|
|
|
|
|
await _syncWithBackend();//同步到后端 |
|
|
|
|
|
|
|
|
// 通知 SettingsController 更新 |
|
|
// 通知 SettingsController 更新 |
|
|
if (Get.isRegistered<SettingsController>()) { |
|
|
if (Get.isRegistered<SettingsController>()) { |
|
|
@ -185,16 +227,17 @@ class ProfileController extends GetxController { |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
await saveUserInfo(); |
|
|
await saveUserInfo();//保存到本地 |
|
|
|
|
|
await _syncWithBackend();//同步到后端 |
|
|
|
|
|
|
|
|
// 同步更新 SettingsController |
|
|
// 同步更新 SettingsController |
|
|
if (Get.isRegistered<SettingsController>()) { |
|
|
if (Get.isRegistered<SettingsController>()) { |
|
|
final settingsController = Get.find<SettingsController>(); |
|
|
final settingsController = Get.find<SettingsController>(); |
|
|
settingsController.loadUserInfo(); |
|
|
settingsController.loadUserInfo(); |
|
|
} |
|
|
} |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
Logger().e('Error updating name: $e'); |
|
|
Logger().e('Error updating name: $e'); |
|
|
Get.snackbar('Error', 'Failed to update user name'); |
|
|
Get.snackbar('错误', 'Failed to update user name'); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|