Browse Source

更新用户名和头像到后端

newdev_shunjiawei
lxm 2 years ago
parent
commit
e383e75b93
  1. 2
      lib/main.dart
  2. 2
      lib/modules/profile/bindings/profile_binding.dart
  3. 50
      lib/modules/profile/controllers/profile_controller.dart

2
lib/main.dart

@ -86,7 +86,7 @@ class MainApp extends StatelessWidget {
splitScreenMode: true,
builder: (_, child) {
return GetMaterialApp(
title: 'Deep Voice',
title: 'DeepSound',
theme: AppTheme.lightTheme,
darkTheme: AppTheme.darkTheme,
themeMode: themeMode, // 使用提前获取的主题模式

2
lib/modules/profile/bindings/profile_binding.dart

@ -6,4 +6,4 @@ class ProfileBinding extends Bindings {
void dependencies() {
Get.lazyPut<ProfileController>(() => ProfileController());
}
}
}

50
lib/modules/profile/controllers/profile_controller.dart

@ -1,11 +1,13 @@
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:image_picker/image_picker.dart';
import 'package:logger/logger.dart';
import '../../../data/models/user_model.dart';
import '../../settings/controllers/settings_controller.dart';
import 'dart:io';
import 'dart:convert';
import 'package:flutter_image_compress/flutter_image_compress.dart';
class ProfileController extends GetxController {
@ -111,6 +113,44 @@ class ProfileController extends GetxController {
// _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() {
final userJson = _storage.read(userKey);
if (userJson != null) {
@ -162,7 +202,8 @@ class ProfileController extends GetxController {
user.avatar = image.path;
}
});
await saveUserInfo();
await saveUserInfo();//保存到本地
await _syncWithBackend();//同步到后端
// 通知 SettingsController 更新
if (Get.isRegistered<SettingsController>()) {
@ -185,16 +226,17 @@ class ProfileController extends GetxController {
}
});
await saveUserInfo();
await saveUserInfo();//保存到本地
await _syncWithBackend();//同步到后端
// 同步更新 SettingsController
if (Get.isRegistered<SettingsController>()) {
final settingsController = Get.find<SettingsController>();
final settingsController = Get.find<SettingsController>();
settingsController.loadUserInfo();
}
} catch (e) {
Logger().e('Error updating name: $e');
Get.snackbar('Error', 'Failed to update user name');
Get.snackbar('错误', 'Failed to update user name');
}
}
}

Loading…
Cancel
Save