Refactor reliability statistics and score handling to support nullable values

This commit is contained in:
Achintha Isuru
2026-01-26 18:47:33 -05:00
parent 060036fe36
commit 22c9606079
3 changed files with 25 additions and 25 deletions

View File

@@ -105,15 +105,15 @@ class StaffProfilePage extends StatelessWidget {
child: Column(
children: [
ReliabilityStatsCard(
totalShifts: profile.totalShifts ?? 0,
averageRating: profile.averageRating ?? 0.0,
onTimeRate: profile.onTimeRate ?? 0,
noShowCount: profile.noShowCount ?? 0,
cancellationCount: profile.cancellationCount ?? 0,
totalShifts: profile.totalShifts,
averageRating: profile.averageRating,
onTimeRate: profile.onTimeRate,
noShowCount: profile.noShowCount,
cancellationCount: profile.cancellationCount,
),
const SizedBox(height: UiConstants.space6),
ReliabilityScoreBar(
reliabilityScore: profile.reliabilityScore ?? 100,
reliabilityScore: profile.reliabilityScore,
),
const SizedBox(height: UiConstants.space6),
SectionTitle(i18n.sections.onboarding),

View File

@@ -6,17 +6,17 @@ import 'package:design_system/design_system.dart';
///
/// Uses design system tokens for all colors, typography, and spacing.
class ReliabilityScoreBar extends StatelessWidget {
final int reliabilityScore;
final int? reliabilityScore;
const ReliabilityScoreBar({
super.key,
required this.reliabilityScore,
this.reliabilityScore,
});
@override
Widget build(BuildContext context) {
final i18n = t.staff.profile.reliability_score;
final score = reliabilityScore / 100;
final score = (reliabilityScore ?? 0) / 100;
return Container(
padding: EdgeInsets.all(UiConstants.space4),
@@ -37,7 +37,7 @@ class ReliabilityScoreBar extends StatelessWidget {
),
),
Text(
"$reliabilityScore%",
"${reliabilityScore ?? 0}%",
style: UiTypography.headline4m.copyWith(
color: UiColors.primary,
),

View File

@@ -6,19 +6,19 @@ import 'package:design_system/design_system.dart';
///
/// Uses design system tokens for all colors, typography, spacing, and icons.
class ReliabilityStatsCard extends StatelessWidget {
final int totalShifts;
final double averageRating;
final int onTimeRate;
final int noShowCount;
final int cancellationCount;
final int? totalShifts;
final double? averageRating;
final int? onTimeRate;
final int? noShowCount;
final int? cancellationCount;
const ReliabilityStatsCard({
super.key,
required this.totalShifts,
required this.averageRating,
required this.onTimeRate,
required this.noShowCount,
required this.cancellationCount,
this.totalShifts,
this.averageRating,
this.onTimeRate,
this.noShowCount,
this.cancellationCount,
});
@override
@@ -43,31 +43,31 @@ class ReliabilityStatsCard extends StatelessWidget {
_buildStatItem(
context,
LucideIcons.briefcase,
"$totalShifts",
"${totalShifts ?? 0}",
"Shifts",
),
_buildStatItem(
context,
LucideIcons.star,
averageRating.toStringAsFixed(1),
(averageRating ?? 0.0).toStringAsFixed(1),
"Rating",
),
_buildStatItem(
context,
LucideIcons.clock,
"$onTimeRate%",
"${onTimeRate ?? 0}%",
"On Time",
),
_buildStatItem(
context,
LucideIcons.xCircle,
"$noShowCount",
"${noShowCount ?? 0}",
"No Shows",
),
_buildStatItem(
context,
LucideIcons.ban,
"$cancellationCount",
"${cancellationCount ?? 0}",
"Cancel.",
),
],