修复白屏BUG、UI 边界溢出 BUG

This commit is contained in:
2026-08-09 01:35:48 +08:00
parent 4a357024bc
commit 4385c6941e
24 changed files with 485 additions and 206 deletions
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:arcx/app/app_theme.dart';
import 'package:arcx/features/scoring/presentation/widgets/target_face_painter.dart';
import 'package:arcx/features/scoring/presentation/widgets/hit_point_painter.dart';
import 'package:arcx/features/stats/application/stats.dart';
class HeatmapCard extends StatelessWidget {
@@ -26,21 +26,22 @@ class HeatmapCard extends StatelessWidget {
Center(
child: AspectRatio(
aspectRatio: 1,
child: hasHits
? CustomPaint(
painter: TargetFacePainter(
hitPoints: stats.hitPoints,
hitColor: AppTheme.hitPoint,
),
child: const SizedBox.expand(),
)
: CustomPaint(
painter: TargetFacePainter(
hitPoints: const [],
showAllHits: false,
),
child: const SizedBox.expand(),
child: Stack(
fit: StackFit.expand,
alignment: Alignment.center,
children: [
Image.asset(
'assets/images/target_face.png',
fit: BoxFit.fill,
),
CustomPaint(
painter: HitPointPainter(
hitPoints: stats.hitPoints,
hitColor: AppTheme.hitPoint,
),
),
],
),
),
),
if (!hasHits)
@@ -1,12 +1,10 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:arcx/app/app_theme.dart';
import 'package:arcx/core/constants/app_defaults.dart';
import 'package:arcx/data/local/models/models.dart';
import 'package:arcx/features/profile/application/profile_controller.dart';
import 'package:arcx/features/profile/presentation/avatar_image.dart';
class ProfileCard extends ConsumerWidget {
const ProfileCard({super.key, required this.onEdit});
@@ -65,17 +63,10 @@ class _Avatar extends StatelessWidget {
@override
Widget build(BuildContext context) {
final source = profile.avatarSource;
final image =
source == AvatarSource.localFile &&
profile.avatarLocalPath != null &&
profile.avatarLocalPath!.isNotEmpty
? FileImage(File(profile.avatarLocalPath!))
: const AssetImage(AppDefaults.defaultAvatarAssetPath);
return CircleAvatar(
radius: 30,
backgroundColor: AppTheme.surfaceMuted,
backgroundImage: image as ImageProvider,
backgroundImage: resolveAvatarImage(profile),
);
}
}
@@ -81,7 +81,7 @@ class _Bar extends StatelessWidget {
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (context, constraints) {
final maxH = constraints.maxHeight - 28; // reserve space for label
final maxH = constraints.maxHeight - 40; // reserve space for count + label
final h = (maxH * ratio).clamp(4.0, maxH);
return Column(
mainAxisAlignment: MainAxisAlignment.end,