From 0be0ee749ca67ef2b1dbff5ff608519a3832caf8 Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Sat, 22 Mar 2025 15:34:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=94=A8=E6=88=B7=E5=90=8D?= =?UTF-8?q?=E5=92=8C=E5=A4=B4=E5=83=8F=E5=88=B0=E5=90=8E=E7=AB=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 2 +- .../profile/bindings/profile_binding.dart | 2 +- .../controllers/profile_controller.dart | 50 +++++++++++++++++-- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/lib/main.dart b/lib/main.dart index 0808b3423..8c9dce259 100644 --- a/lib/main.dart +++ b/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, // 使用提前获取的主题模式 diff --git a/lib/modules/profile/bindings/profile_binding.dart b/lib/modules/profile/bindings/profile_binding.dart index 6bfc58f45..ca7ef9b5d 100644 --- a/lib/modules/profile/bindings/profile_binding.dart +++ b/lib/modules/profile/bindings/profile_binding.dart @@ -6,4 +6,4 @@ class ProfileBinding extends Bindings { void dependencies() { Get.lazyPut(() => ProfileController()); } -} \ No newline at end of file +} \ No newline at end of file diff --git a/lib/modules/profile/controllers/profile_controller.dart b/lib/modules/profile/controllers/profile_controller.dart index 083d9b9e4..98a1a92aa 100644 --- a/lib/modules/profile/controllers/profile_controller.dart +++ b/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 _syncWithBackend() async { + try { + // 准备数据 + Map data = { + "image": "", // 默认空字符串 + "name": userInfo.value.name, + "language": currentLanguage.value, + }; + + // 如果有头像,转换为base64 + if (userInfo.value.avatar.isNotEmpty) { + File imageFile = File(userInfo.value.avatar); + List 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()) { @@ -185,16 +226,17 @@ class ProfileController extends GetxController { } }); - await saveUserInfo(); + await saveUserInfo();//保存到本地 + await _syncWithBackend();//同步到后端 // 同步更新 SettingsController if (Get.isRegistered()) { - final settingsController = Get.find(); + final settingsController = Get.find(); 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'); } } }