fix(mobile): 修正火柴人100%进度时到达红旗位置的计算

- 精确计算终点位置:火柴人列右边缘对齐红旗左边缘
- 起点从昵称标签右边4px间距开始

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-24 01:18:27 -08:00
parent c1c4a52ad3
commit 12c0c796f4
1 changed files with 13 additions and 7 deletions

View File

@ -234,17 +234,23 @@ class _StickmanRaceWidgetState extends State<StickmanRaceWidget>
//
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,