From 061b667b8b3bba8798a38f8513073409c09520e2 Mon Sep 17 00:00:00 2001 From: ggurdin <46800240+ggurdin@users.noreply.github.com> Date: Mon, 29 Dec 2025 15:19:49 -0500 Subject: [PATCH] fix: fix white box error and add opacity variation to construct levels in progress bar (#4966) --- .../construct_xp_progress_bar.dart | 50 +++++++++++-------- .../lemma_usage_dots.dart | 24 ++++----- .../analytics_misc/construct_use_model.dart | 14 ++---- 3 files changed, 44 insertions(+), 44 deletions(-) diff --git a/lib/pangea/analytics_details_popup/construct_xp_progress_bar.dart b/lib/pangea/analytics_details_popup/construct_xp_progress_bar.dart index 744fb952c..e1deb3bf1 100644 --- a/lib/pangea/analytics_details_popup/construct_xp_progress_bar.dart +++ b/lib/pangea/analytics_details_popup/construct_xp_progress_bar.dart @@ -27,36 +27,42 @@ class ConstructXPProgressBar extends StatelessWidget { final analyticsService = Matrix.of(context).analyticsDataService; - return Column( - spacing: 8.0, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [...categories.map((c) => c.icon())], - ), - StreamBuilder( - stream: - analyticsService.updateDispatcher.constructUpdateStream.stream, + return StreamBuilder( + stream: analyticsService.updateDispatcher.constructUpdateStream.stream, + builder: (context, snapshot) { + return FutureBuilder( + future: analyticsService.getConstructUse(construct), builder: (context, snapshot) { - return FutureBuilder( - future: analyticsService.getConstructUse(construct), - builder: (context, snapshot) { - final points = snapshot.data?.points ?? 0; - final progress = - min(1.0, points / AnalyticsConstants.xpForFlower); - - return AnimatedProgressBar( + final points = snapshot.data?.points ?? 0; + final progress = min(1.0, points / AnalyticsConstants.xpForFlower); + final level = + snapshot.data?.constructLevel ?? ConstructLevelEnum.seeds; + return Column( + spacing: 8.0, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ...categories.map( + (c) => Opacity( + opacity: level == c ? 1.0 : 0.4, + child: c.icon(), + ), + ), + ], + ), + AnimatedProgressBar( height: 20.0, widthPercent: progress, barColor: AppConfig.goldLight, backgroundColor: Theme.of(context).colorScheme.secondaryContainer, - ); - }, + ), + ], ); }, - ), - ], + ); + }, ); } } diff --git a/lib/pangea/analytics_details_popup/lemma_usage_dots.dart b/lib/pangea/analytics_details_popup/lemma_usage_dots.dart index ea88d35c1..f900fa269 100644 --- a/lib/pangea/analytics_details_popup/lemma_usage_dots.dart +++ b/lib/pangea/analytics_details_popup/lemma_usage_dots.dart @@ -69,20 +69,18 @@ class LemmaUsageDots extends StatelessWidget { color: textColor.withValues(alpha: 0.7), ), ), - title: Flexible( - child: dots.isEmpty - ? Text( - L10n.of(context).noDataFound, - style: const TextStyle( - fontStyle: FontStyle.italic, - ), - ) - : Wrap( - spacing: 3, - runSpacing: 5, - children: dots, + title: dots.isEmpty + ? Text( + L10n.of(context).noDataFound, + style: const TextStyle( + fontStyle: FontStyle.italic, ), - ), + ) + : Wrap( + spacing: 3, + runSpacing: 5, + children: dots, + ), ); } } diff --git a/lib/pangea/analytics_misc/construct_use_model.dart b/lib/pangea/analytics_misc/construct_use_model.dart index 90bf7ca0c..64744b46f 100644 --- a/lib/pangea/analytics_misc/construct_use_model.dart +++ b/lib/pangea/analytics_misc/construct_use_model.dart @@ -116,15 +116,11 @@ class ConstructUses { } } - ConstructLevelEnum get constructLevel { - if (points < 30) { - return ConstructLevelEnum.seeds; - } else if (points < 100) { - return ConstructLevelEnum.greens; - } else { - return ConstructLevelEnum.flowers; - } - } + ConstructLevelEnum get constructLevel => switch (points) { + < AnalyticsConstants.xpForGreens => ConstructLevelEnum.seeds, + < AnalyticsConstants.xpForFlower => ConstructLevelEnum.greens, + _ => ConstructLevelEnum.flowers, + }; void merge(ConstructUses other) { if (other.lemma.toLowerCase() != lemma.toLowerCase() ||