From 0622dd14d9a9333d4de676f9432e402a675a6692 Mon Sep 17 00:00:00 2001 From: hailin Date: Sun, 7 Dec 2025 23:28:04 -0800 Subject: [PATCH] fix(mobile-app): fix avatar upload response parsing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Parse avatarUrl from nested data object in API response 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../lib/core/services/account_service.dart | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/frontend/mobile-app/lib/core/services/account_service.dart b/frontend/mobile-app/lib/core/services/account_service.dart index 9cc09299..8fd2beb7 100644 --- a/frontend/mobile-app/lib/core/services/account_service.dart +++ b/frontend/mobile-app/lib/core/services/account_service.dart @@ -883,8 +883,18 @@ class AccountService { } final responseData = response.data as Map; - final newAvatarUrl = responseData['avatarUrl'] as String; + debugPrint('$_tag uploadAvatar() - responseData: $responseData'); + // API 返回格式: { success: true, data: { message, avatarUrl } } + final data = responseData['data'] as Map?; + debugPrint('$_tag uploadAvatar() - data: $data'); + if (data == null) { + throw const ApiException('上传头像失败: 响应数据格式错误'); + } + final newAvatarUrl = data['avatarUrl'] as String?; debugPrint('$_tag uploadAvatar() - 新头像URL: $newAvatarUrl'); + if (newAvatarUrl == null || newAvatarUrl.isEmpty) { + throw const ApiException('上传头像失败: 未返回头像URL'); + } // 更新本地存储(使用 avatarUrl 而不是 avatarSvg) await _secureStorage.write(key: StorageKeys.avatarUrl, value: newAvatarUrl);