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; final bounce = _bounceController.value * 3;
// - padding(32) - padding(32) - (40) // 100%
// 100%
final screenWidth = MediaQuery.of(context).size.width; final screenWidth = MediaQuery.of(context).size.width;
final containerWidth = screenWidth - 32 - 32; // padding + padding final containerWidth = screenWidth - 32 - 32; // padding + padding
final stickmanWidth = 60.0; // + final stickmanColumnWidth = 60.0; // +
final flagAreaWidth = 40.0; // final flagRightMargin = 8.0; // right值
final flagWidth = 24.0; //
final nicknameAreaWidth = 65.0; // final nicknameAreaWidth = 65.0; //
final gap = 4.0; // final gap = 4.0; //
//
final availableWidth = containerWidth - nicknameAreaWidth - gap - stickmanWidth - flagAreaWidth; // 100%
final stickmanLeftPosition = nicknameAreaWidth + gap + availableWidth * horizontalProgress; // = 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( return Positioned(
left: 0, left: 0,