Refactor reliability statistics and score handling to support nullable values
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
|
||||
@@ -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.",
|
||||
),
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user