From 12c0c796f4e10f34e807311c5a69de91bf77e687 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 24 Dec 2025 01:18:27 -0800 Subject: [PATCH] =?UTF-8?q?fix(mobile):=20=E4=BF=AE=E6=AD=A3=E7=81=AB?= =?UTF-8?q?=E6=9F=B4=E4=BA=BA100%=E8=BF=9B=E5=BA=A6=E6=97=B6=E5=88=B0?= =?UTF-8?q?=E8=BE=BE=E7=BA=A2=E6=97=97=E4=BD=8D=E7=BD=AE=E7=9A=84=E8=AE=A1?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 精确计算终点位置:火柴人列右边缘对齐红旗左边缘 - 起点从昵称标签右边4px间距开始 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../widgets/stickman_race_widget.dart | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/frontend/mobile-app/lib/features/authorization/presentation/widgets/stickman_race_widget.dart b/frontend/mobile-app/lib/features/authorization/presentation/widgets/stickman_race_widget.dart index 46ab7391..3c027636 100644 --- a/frontend/mobile-app/lib/features/authorization/presentation/widgets/stickman_race_widget.dart +++ b/frontend/mobile-app/lib/features/authorization/presentation/widgets/stickman_race_widget.dart @@ -234,17 +234,23 @@ class _StickmanRaceWidgetState extends State // 添加上下弹跳效果 final bounce = _bounceController.value * 3; - // 计算可用宽度:屏幕宽度 - 页面padding(32) - 容器padding(32) - 红旗区域(40) - // 让火柴人在100%时正好到达红旗位置 + // 计算可用宽度,让火柴人在100%时正好到达红旗位置 final screenWidth = MediaQuery.of(context).size.width; final containerWidth = screenWidth - 32 - 32; // 页面padding + 容器padding - final stickmanWidth = 60.0; // 火柴人+数量标签的宽度 - final flagAreaWidth = 40.0; // 红旗区域宽度 + final stickmanColumnWidth = 60.0; // 火柴人+数量标签列的宽度 + final flagRightMargin = 8.0; // 红旗的right值 + final flagWidth = 24.0; // 红旗图标宽度 final nicknameAreaWidth = 65.0; // 昵称区域宽度 final gap = 4.0; // 昵称和火柴人之间的最小间距 - // 火柴人可移动的范围:从昵称右边开始到红旗位置 - final availableWidth = containerWidth - nicknameAreaWidth - gap - stickmanWidth - flagAreaWidth; - final stickmanLeftPosition = nicknameAreaWidth + gap + availableWidth * horizontalProgress; + + // 100%时火柴人列的右边缘应该对齐红旗左边缘 + // 红旗左边位置 = containerWidth - flagRightMargin - flagWidth + // 火柴人列右边 = stickmanLeftPosition + stickmanColumnWidth + // 所以 100% 时: stickmanLeftPosition = containerWidth - flagRightMargin - flagWidth - stickmanColumnWidth + final endPosition = containerWidth - flagRightMargin - flagWidth - stickmanColumnWidth; + final startPosition = nicknameAreaWidth + gap; + final availableWidth = endPosition - startPosition; + final stickmanLeftPosition = startPosition + availableWidth * horizontalProgress; return Positioned( left: 0,