diff --git a/apps/mobile/apps/client/pubspec.yaml b/apps/mobile/apps/client/pubspec.yaml index 0949ea04..2854b683 100644 --- a/apps/mobile/apps/client/pubspec.yaml +++ b/apps/mobile/apps/client/pubspec.yaml @@ -33,8 +33,9 @@ dependencies: client_create_order: path: ../../packages/features/client/orders/create_order krow_core: - path: ../../packages/core - + path: ../../packages/core + krow_domain: + path: ../../packages/domain cupertino_icons: ^1.0.8 flutter_modular: ^6.3.2 flutter_bloc: ^8.1.3 diff --git a/apps/mobile/apps/staff/pubspec.yaml b/apps/mobile/apps/staff/pubspec.yaml index de4181dc..69b8ed4e 100644 --- a/apps/mobile/apps/staff/pubspec.yaml +++ b/apps/mobile/apps/staff/pubspec.yaml @@ -28,6 +28,8 @@ dependencies: path: ../../packages/features/staff/staff_main krow_core: path: ../../packages/core + krow_domain: + path: ../../packages/domain cupertino_icons: ^1.0.8 flutter_modular: ^6.3.0 firebase_core: ^4.4.0 diff --git a/apps/mobile/packages/core/lib/src/services/api_service/mixins/api_error_handler.dart b/apps/mobile/packages/core/lib/src/services/api_service/mixins/api_error_handler.dart index da98e982..c8666199 100644 --- a/apps/mobile/packages/core/lib/src/services/api_service/mixins/api_error_handler.dart +++ b/apps/mobile/packages/core/lib/src/services/api_service/mixins/api_error_handler.dart @@ -97,7 +97,7 @@ mixin ApiErrorHandler { ); case DioExceptionType.cancel: - return UnknownException( + return const UnknownException( technicalMessage: 'Request cancelled', ); diff --git a/apps/mobile/packages/features/client/billing/lib/src/presentation/widgets/invoices_list_skeleton.dart b/apps/mobile/packages/features/client/billing/lib/src/presentation/widgets/invoices_list_skeleton.dart index fcface9d..f09d4cda 100644 --- a/apps/mobile/packages/features/client/billing/lib/src/presentation/widgets/invoices_list_skeleton.dart +++ b/apps/mobile/packages/features/client/billing/lib/src/presentation/widgets/invoices_list_skeleton.dart @@ -26,10 +26,10 @@ class InvoicesListSkeleton extends StatelessWidget { ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ + children: [ UiShimmerBox( width: 64, height: 22, @@ -47,10 +47,10 @@ class InvoicesListSkeleton extends StatelessWidget { const SizedBox(height: UiConstants.space3), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ + children: [ const Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ UiShimmerLine(width: 80, height: 10), SizedBox(height: UiConstants.space1), UiShimmerLine(width: 100, height: 20), diff --git a/apps/mobile/packages/features/client/client_coverage/lib/src/presentation/widgets/coverage_page_skeleton/shift_card_skeleton.dart b/apps/mobile/packages/features/client/client_coverage/lib/src/presentation/widgets/coverage_page_skeleton/shift_card_skeleton.dart index c74212cd..1d890fb4 100644 --- a/apps/mobile/packages/features/client/client_coverage/lib/src/presentation/widgets/coverage_page_skeleton/shift_card_skeleton.dart +++ b/apps/mobile/packages/features/client/client_coverage/lib/src/presentation/widgets/coverage_page_skeleton/shift_card_skeleton.dart @@ -14,20 +14,20 @@ class ShiftCardSkeleton extends StatelessWidget { borderRadius: UiConstants.radiusLg, ), clipBehavior: Clip.antiAlias, - child: Column( - children: [ + child: Column( + children: [ // Shift header Padding( padding: const EdgeInsets.all(UiConstants.space4), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ const UiShimmerLine(width: 180, height: 16), const SizedBox(height: UiConstants.space2), const UiShimmerLine(width: 120, height: 12), const SizedBox(height: UiConstants.space2), Row( - children: [ + children: [ const UiShimmerLine(width: 80, height: 12), const Spacer(), UiShimmerBox( @@ -47,7 +47,7 @@ class ShiftCardSkeleton extends StatelessWidget { horizontal: UiConstants.space3, ).copyWith(bottom: UiConstants.space3), child: const Column( - children: [ + children: [ UiShimmerListItem(), UiShimmerListItem(), ], diff --git a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_edit_mode_body.dart b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_edit_mode_body.dart index f58b780c..848774e7 100644 --- a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_edit_mode_body.dart +++ b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_edit_mode_body.dart @@ -1,25 +1,21 @@ -import 'package:design_system/design_system.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; - import 'package:client_home/src/presentation/blocs/client_home_bloc.dart'; import 'package:client_home/src/presentation/blocs/client_home_event.dart'; import 'package:client_home/src/presentation/blocs/client_home_state.dart'; import 'package:client_home/src/presentation/widgets/dashboard_widget_builder.dart'; +import 'package:design_system/design_system.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; /// Widget that displays the home dashboard in edit mode with drag-and-drop support. /// /// Allows users to reorder and rearrange dashboard widgets. class ClientHomeEditModeBody extends StatelessWidget { + /// Creates a [ClientHomeEditModeBody]. + const ClientHomeEditModeBody({required this.state, super.key}); + /// The current home state. final ClientHomeState state; - /// Creates a [ClientHomeEditModeBody]. - const ClientHomeEditModeBody({ - required this.state, - super.key, - }); - @override Widget build(BuildContext context) { return ReorderableListView( @@ -30,18 +26,15 @@ class ClientHomeEditModeBody extends StatelessWidget { 100, ), onReorder: (int oldIndex, int newIndex) { - BlocProvider.of(context) - .add(ClientHomeWidgetReordered(oldIndex, newIndex)); + BlocProvider.of( + context, + ).add(ClientHomeWidgetReordered(oldIndex, newIndex)); }, children: state.widgetOrder.map((String id) { return Container( key: ValueKey(id), margin: const EdgeInsets.only(bottom: UiConstants.space4), - child: DashboardWidgetBuilder( - id: id, - state: state, - isEditMode: true, - ), + child: DashboardWidgetBuilder(id: id, state: state, isEditMode: true), ); }).toList(), ); diff --git a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_header_skeleton.dart b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_header_skeleton.dart index 2e186863..836a6181 100644 --- a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_header_skeleton.dart +++ b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_header_skeleton.dart @@ -10,7 +10,7 @@ class ClientHomeHeaderSkeleton extends StatelessWidget { @override Widget build(BuildContext context) { - return UiShimmer( + return const UiShimmer( child: Padding( padding: const EdgeInsets.fromLTRB( UiConstants.space4, @@ -18,14 +18,14 @@ class ClientHomeHeaderSkeleton extends StatelessWidget { UiConstants.space4, UiConstants.space3, ), - child: Row( + child: const Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ + children: const [ + const Row( + children: const [ const UiShimmerCircle(size: UiConstants.space10), const SizedBox(width: UiConstants.space3), - Column( + const Column( crossAxisAlignment: CrossAxisAlignment.start, children: const [ UiShimmerLine(width: 80, height: 12), @@ -35,7 +35,7 @@ class ClientHomeHeaderSkeleton extends StatelessWidget { ), ], ), - Row( + const Row( spacing: UiConstants.space2, children: const [ UiShimmerBox(width: 36, height: 36), diff --git a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_page_skeleton/reorder_section_skeleton.dart b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_page_skeleton/reorder_section_skeleton.dart index 783fc2b0..97a43b03 100644 --- a/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_page_skeleton/reorder_section_skeleton.dart +++ b/apps/mobile/packages/features/client/home/lib/src/presentation/widgets/client_home_page_skeleton/reorder_section_skeleton.dart @@ -10,7 +10,7 @@ class ReorderSectionSkeleton extends StatelessWidget { @override Widget build(BuildContext context) { - return Column( + return const Column( crossAxisAlignment: CrossAxisAlignment.start, children: const [ UiShimmerSectionHeader(), diff --git a/apps/mobile/packages/features/client/home/pubspec.yaml b/apps/mobile/packages/features/client/home/pubspec.yaml index c5043183..69d1116d 100644 --- a/apps/mobile/packages/features/client/home/pubspec.yaml +++ b/apps/mobile/packages/features/client/home/pubspec.yaml @@ -20,7 +20,8 @@ dependencies: path: ../../../design_system core_localization: path: ../../../core_localization - krow_domain: ^0.0.1 + krow_domain: + path: ../../../domain krow_core: path: ../../../core diff --git a/apps/mobile/packages/features/client/hubs/lib/src/presentation/widgets/hubs_page_skeleton.dart b/apps/mobile/packages/features/client/hubs/lib/src/presentation/widgets/hubs_page_skeleton.dart index 4fcb39bd..c420987a 100644 --- a/apps/mobile/packages/features/client/hubs/lib/src/presentation/widgets/hubs_page_skeleton.dart +++ b/apps/mobile/packages/features/client/hubs/lib/src/presentation/widgets/hubs_page_skeleton.dart @@ -13,7 +13,7 @@ class HubsPageSkeleton extends StatelessWidget { Widget build(BuildContext context) { return UiShimmer( child: Column( - children: List.generate(5, (int index) { + children: List.generate(5, (int index) { return Padding( padding: const EdgeInsets.only(bottom: UiConstants.space3), child: Container( @@ -23,7 +23,7 @@ class HubsPageSkeleton extends StatelessWidget { ), padding: const EdgeInsets.all(UiConstants.space4), child: Row( - children: [ + children: [ // Leading icon placeholder UiShimmerBox( width: 52, @@ -35,7 +35,7 @@ class HubsPageSkeleton extends StatelessWidget { const Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ UiShimmerLine(width: 160, height: 16), SizedBox(height: UiConstants.space2), UiShimmerLine(width: 200, height: 12), diff --git a/apps/mobile/packages/features/client/reports/lib/src/presentation/pages/performance_report_page.dart b/apps/mobile/packages/features/client/reports/lib/src/presentation/pages/performance_report_page.dart index 9c1c02e8..56d601f5 100644 --- a/apps/mobile/packages/features/client/reports/lib/src/presentation/pages/performance_report_page.dart +++ b/apps/mobile/packages/features/client/reports/lib/src/presentation/pages/performance_report_page.dart @@ -24,7 +24,7 @@ class _PerformanceReportPageState extends State { @override Widget build(BuildContext context) { - return BlocProvider( + return BlocProvider( create: (BuildContext context) => Modular.get() ..add(LoadPerformanceReport(startDate: _startDate, endDate: _endDate)), child: Scaffold( diff --git a/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/report_detail_skeleton.dart b/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/report_detail_skeleton.dart index d9c26fbb..82abcffc 100644 --- a/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/report_detail_skeleton.dart +++ b/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/report_detail_skeleton.dart @@ -15,7 +15,7 @@ class ReportDetailSkeleton extends StatelessWidget { return UiShimmer( child: SingleChildScrollView( child: Column( - children: [ + children: [ // Header area (matches the blue header with back button + title) Container( padding: const EdgeInsets.only( @@ -26,12 +26,12 @@ class ReportDetailSkeleton extends StatelessWidget { ), color: UiColors.primary, child: Row( - children: [ + children: [ const UiShimmerCircle(size: UiConstants.space10), const SizedBox(width: UiConstants.space3), Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ UiShimmerBox( width: 140, height: 18, @@ -57,10 +57,10 @@ class ReportDetailSkeleton extends StatelessWidget { const EdgeInsets.symmetric(horizontal: UiConstants.space5), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ // Summary stat cards row const Row( - children: [ + children: [ Expanded(child: UiShimmerStatsCard()), SizedBox(width: UiConstants.space3), Expanded(child: UiShimmerStatsCard()), @@ -78,14 +78,14 @@ class ReportDetailSkeleton extends StatelessWidget { ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ const UiShimmerLine(width: 140, height: 14), const SizedBox(height: UiConstants.space8), Expanded( child: Row( crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: List.generate(7, (int index) { + children: List.generate(7, (int index) { // Varying bar heights for visual interest final double height = 40.0 + (index * 17 % 120); @@ -113,20 +113,20 @@ class ReportDetailSkeleton extends StatelessWidget { ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ const UiShimmerLine(width: 160, height: 14), const SizedBox(height: UiConstants.space6), - ...List.generate(3, (int index) { + ...List.generate(3, (int index) { return Padding( padding: const EdgeInsets.only( bottom: UiConstants.space5, ), child: Column( - children: [ + children: [ const Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ + children: [ UiShimmerLine(width: 100, height: 12), UiShimmerLine(width: 60, height: 12), ], diff --git a/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/reports_page/metrics_grid_skeleton/metric_card_skeleton.dart b/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/reports_page/metrics_grid_skeleton/metric_card_skeleton.dart index 61d5940d..10a2e8a3 100644 --- a/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/reports_page/metrics_grid_skeleton/metric_card_skeleton.dart +++ b/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/reports_page/metrics_grid_skeleton/metric_card_skeleton.dart @@ -17,10 +17,10 @@ class MetricCardSkeleton extends StatelessWidget { ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ // Icon + label row - Row( - children: [ + const Row( + children: [ const UiShimmerCircle(size: UiConstants.space6), const SizedBox(width: UiConstants.space2), const Expanded( diff --git a/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/reports_page/metrics_grid_skeleton/metrics_grid_skeleton.dart b/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/reports_page/metrics_grid_skeleton/metrics_grid_skeleton.dart index 9181ec7a..d1e7cdf2 100644 --- a/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/reports_page/metrics_grid_skeleton/metrics_grid_skeleton.dart +++ b/apps/mobile/packages/features/client/reports/lib/src/presentation/widgets/reports_page/metrics_grid_skeleton/metrics_grid_skeleton.dart @@ -22,7 +22,7 @@ class MetricsGridSkeleton extends StatelessWidget { mainAxisSpacing: UiConstants.space3, crossAxisSpacing: UiConstants.space3, childAspectRatio: 1.32, - children: List.generate(6, (int index) { + children: List.generate(6, (int index) { return const MetricCardSkeleton(); }), ), diff --git a/apps/mobile/packages/features/client/settings/lib/src/presentation/pages/edit_profile_page.dart b/apps/mobile/packages/features/client/settings/lib/src/presentation/pages/edit_profile_page.dart index a73d6847..59474525 100644 --- a/apps/mobile/packages/features/client/settings/lib/src/presentation/pages/edit_profile_page.dart +++ b/apps/mobile/packages/features/client/settings/lib/src/presentation/pages/edit_profile_page.dart @@ -10,7 +10,7 @@ class EditProfilePage extends StatefulWidget { } class _EditProfilePageState extends State { - final _formKey = GlobalKey(); + final GlobalKey _formKey = GlobalKey(); late TextEditingController _firstNameController; late TextEditingController _lastNameController; late TextEditingController _emailController; @@ -50,11 +50,11 @@ class _EditProfilePageState extends State { key: _formKey, child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ Center( child: Stack( - children: [ - CircleAvatar( + children: [ + const CircleAvatar( radius: 50, backgroundColor: UiColors.bgSecondary, child: const Icon(UiIcons.user, size: 40, color: UiColors.primary), diff --git a/apps/mobile/packages/features/client/settings/lib/src/presentation/widgets/client_settings_page/settings_actions.dart b/apps/mobile/packages/features/client/settings/lib/src/presentation/widgets/client_settings_page/settings_actions.dart index 5332fc57..eef1331e 100644 --- a/apps/mobile/packages/features/client/settings/lib/src/presentation/widgets/client_settings_page/settings_actions.dart +++ b/apps/mobile/packages/features/client/settings/lib/src/presentation/widgets/client_settings_page/settings_actions.dart @@ -180,7 +180,7 @@ class _NotificationsSettingsCard extends StatelessWidget { @override Widget build(BuildContext context) { return BlocBuilder( - builder: (context, state) { + builder: (BuildContext context, ClientSettingsState state) { return Card( elevation: 0, shape: RoundedRectangleBorder( @@ -202,7 +202,7 @@ class _NotificationsSettingsCard extends StatelessWidget { icon: UiIcons.bell, title: context.t.client_settings.preferences.push, value: state.pushEnabled, - onChanged: (val) => + onChanged: (bool val) => ReadContext(context).read().add( ClientSettingsNotificationToggled( type: 'push', @@ -214,7 +214,7 @@ class _NotificationsSettingsCard extends StatelessWidget { icon: UiIcons.mail, title: context.t.client_settings.preferences.email, value: state.emailEnabled, - onChanged: (val) => + onChanged: (bool val) => ReadContext(context).read().add( ClientSettingsNotificationToggled( type: 'email', @@ -226,7 +226,7 @@ class _NotificationsSettingsCard extends StatelessWidget { icon: UiIcons.phone, title: context.t.client_settings.preferences.sms, value: state.smsEnabled, - onChanged: (val) => + onChanged: (bool val) => ReadContext(context).read().add( ClientSettingsNotificationToggled( type: 'sms', @@ -244,10 +244,6 @@ class _NotificationsSettingsCard extends StatelessWidget { } class _NotificationToggle extends StatelessWidget { - final IconData icon; - final String title; - final bool value; - final ValueChanged onChanged; const _NotificationToggle({ required this.icon, @@ -255,14 +251,18 @@ class _NotificationToggle extends StatelessWidget { required this.value, required this.onChanged, }); + final IconData icon; + final String title; + final bool value; + final ValueChanged onChanged; @override Widget build(BuildContext context) { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ + children: [ Row( - children: [ + children: [ Icon(icon, size: 20, color: UiColors.iconSecondary), const SizedBox(width: UiConstants.space3), Text(title, style: UiTypography.footnote1m.textPrimary), diff --git a/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/home_page_skeleton/home_page_skeleton.dart b/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/home_page_skeleton/home_page_skeleton.dart index 2892b948..1abc020e 100644 --- a/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/home_page_skeleton/home_page_skeleton.dart +++ b/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/home_page_skeleton/home_page_skeleton.dart @@ -1,10 +1,9 @@ import 'package:design_system/design_system.dart'; import 'package:flutter/material.dart'; - -import 'quick_actions_skeleton.dart'; -import 'recommended_section_skeleton.dart'; -import 'shift_section_skeleton.dart'; -import 'skeleton_divider.dart'; +import 'package:staff_home/src/presentation/widgets/home_page/home_page_skeleton/quick_actions_skeleton.dart'; +import 'package:staff_home/src/presentation/widgets/home_page/home_page_skeleton/recommended_section_skeleton.dart'; +import 'package:staff_home/src/presentation/widgets/home_page/home_page_skeleton/shift_section_skeleton.dart'; +import 'package:staff_home/src/presentation/widgets/home_page/home_page_skeleton/skeleton_divider.dart'; /// Shimmer loading skeleton for the staff home page. /// diff --git a/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/home_page_skeleton/shift_section_skeleton.dart b/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/home_page_skeleton/shift_section_skeleton.dart index f8ffc72a..0ad061e7 100644 --- a/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/home_page_skeleton/shift_section_skeleton.dart +++ b/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/home_page_skeleton/shift_section_skeleton.dart @@ -1,7 +1,6 @@ import 'package:design_system/design_system.dart'; import 'package:flutter/material.dart'; - -import 'shift_card_skeleton.dart'; +import 'package:staff_home/src/presentation/widgets/home_page/home_page_skeleton/shift_card_skeleton.dart'; /// Skeleton for a shift section (section header + 2 shift card placeholders). class ShiftSectionSkeleton extends StatelessWidget { diff --git a/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/section_layout.dart b/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/section_layout.dart index 4d21c539..222dd961 100644 --- a/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/section_layout.dart +++ b/apps/mobile/packages/features/staff/home/lib/src/presentation/widgets/home_page/section_layout.dart @@ -1,7 +1,6 @@ import 'package:design_system/design_system.dart'; import 'package:flutter/material.dart'; - -import 'section_header.dart'; +import 'package:staff_home/src/presentation/widgets/home_page/section_header.dart'; /// A common layout widget for home page sections. /// diff --git a/apps/mobile/packages/features/staff/payments/lib/src/payments_module.dart b/apps/mobile/packages/features/staff/payments/lib/src/payments_module.dart index 026ea2ff..551170b7 100644 --- a/apps/mobile/packages/features/staff/payments/lib/src/payments_module.dart +++ b/apps/mobile/packages/features/staff/payments/lib/src/payments_module.dart @@ -1,8 +1,7 @@ -import 'package:flutter/src/widgets/framework.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_modular/flutter_modular.dart'; import 'package:krow_core/core.dart'; import 'package:krow_domain/krow_domain.dart'; - import 'package:staff_payments/src/data/repositories/payments_repository_impl.dart'; import 'package:staff_payments/src/domain/repositories/payments_repository.dart'; import 'package:staff_payments/src/domain/usecases/get_payment_chart_usecase.dart'; diff --git a/apps/mobile/packages/features/staff/payments/lib/src/presentation/pages/early_pay_page.dart b/apps/mobile/packages/features/staff/payments/lib/src/presentation/pages/early_pay_page.dart index d9c6716c..1e4f7803 100644 --- a/apps/mobile/packages/features/staff/payments/lib/src/presentation/pages/early_pay_page.dart +++ b/apps/mobile/packages/features/staff/payments/lib/src/presentation/pages/early_pay_page.dart @@ -27,7 +27,7 @@ class EarlyPayPage extends StatelessWidget { border: Border.all(color: UiColors.primary.withValues(alpha: 0.1)), ), child: Column( - children: [ + children: [ Text( context.t.staff_payments.early_pay.available_label, style: UiTypography.body2m.textSecondary, @@ -65,13 +65,13 @@ class EarlyPayPage extends StatelessWidget { border: Border.all(color: UiColors.separatorPrimary), ), child: Row( - children: [ + children: [ const Icon(UiIcons.bank, size: 24, color: UiColors.primary), const SizedBox(width: 12), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ Text('Chase Bank', style: UiTypography.body2b.textPrimary), Text('Ending in 4321', style: UiTypography.footnote2r.textSecondary), ], diff --git a/apps/mobile/packages/features/staff/payments/lib/src/presentation/widgets/payments_page_skeleton/payment_item_skeleton.dart b/apps/mobile/packages/features/staff/payments/lib/src/presentation/widgets/payments_page_skeleton/payment_item_skeleton.dart index 2d24c1ae..09c646a5 100644 --- a/apps/mobile/packages/features/staff/payments/lib/src/presentation/widgets/payments_page_skeleton/payment_item_skeleton.dart +++ b/apps/mobile/packages/features/staff/payments/lib/src/presentation/widgets/payments_page_skeleton/payment_item_skeleton.dart @@ -18,13 +18,13 @@ class PaymentItemSkeleton extends StatelessWidget { borderRadius: UiConstants.radiusLg, ), child: const Row( - children: [ + children: [ UiShimmerCircle(size: 40), SizedBox(width: UiConstants.space3), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ UiShimmerLine(width: 140, height: 14), SizedBox(height: UiConstants.space2), UiShimmerLine(width: 100, height: 12), diff --git a/apps/mobile/packages/features/staff/payments/lib/src/presentation/widgets/payments_page_skeleton/payments_page_skeleton.dart b/apps/mobile/packages/features/staff/payments/lib/src/presentation/widgets/payments_page_skeleton/payments_page_skeleton.dart index 45de7a7a..245a24d2 100644 --- a/apps/mobile/packages/features/staff/payments/lib/src/presentation/widgets/payments_page_skeleton/payments_page_skeleton.dart +++ b/apps/mobile/packages/features/staff/payments/lib/src/presentation/widgets/payments_page_skeleton/payments_page_skeleton.dart @@ -16,12 +16,12 @@ class PaymentsPageSkeleton extends StatelessWidget { return UiShimmer( child: SingleChildScrollView( child: Column( - children: [ + children: [ // Header section with gradient Container( decoration: BoxDecoration( gradient: LinearGradient( - colors: [ + colors: [ UiColors.primary, UiColors.primary.withValues(alpha: 0.8), ], @@ -37,7 +37,7 @@ class PaymentsPageSkeleton extends StatelessWidget { ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ // Title placeholder const UiShimmerLine(width: 120, height: 24), const SizedBox(height: UiConstants.space6), @@ -45,7 +45,7 @@ class PaymentsPageSkeleton extends StatelessWidget { // Balance center const Center( child: Column( - children: [ + children: [ UiShimmerLine(width: 100, height: 14), SizedBox(height: UiConstants.space1), UiShimmerLine(width: 160, height: 36), @@ -73,7 +73,7 @@ class PaymentsPageSkeleton extends StatelessWidget { ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [ + children: [ // Earnings graph placeholder UiShimmerBox( width: double.infinity, @@ -83,10 +83,10 @@ class PaymentsPageSkeleton extends StatelessWidget { const SizedBox(height: UiConstants.space6), // Quick stats row - Row( - children: [ + const Row( + children: [ Expanded(child: UiShimmerStatsCard()), - const SizedBox(width: UiConstants.space3), + SizedBox(width: UiConstants.space3), Expanded(child: UiShimmerStatsCard()), ], ), @@ -99,7 +99,7 @@ class PaymentsPageSkeleton extends StatelessWidget { // Payment history items UiShimmerList( itemCount: 4, - itemBuilder: (index) => const PaymentItemSkeleton(), + itemBuilder: (int index) => const PaymentItemSkeleton(), ), ], ), diff --git a/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/menu_section_skeleton.dart b/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/menu_section_skeleton.dart index ff95bbbc..c14accd9 100644 --- a/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/menu_section_skeleton.dart +++ b/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/menu_section_skeleton.dart @@ -26,9 +26,9 @@ class MenuSectionSkeleton extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ // Section title placeholder - Padding( - padding: const EdgeInsets.only(left: UiConstants.space1), - child: const UiShimmerLine(width: 100, height: 12), + const Padding( + padding: EdgeInsets.only(left: UiConstants.space1), + child: UiShimmerLine(width: 100, height: 12), ), const SizedBox(height: UiConstants.space3), // Menu items grid diff --git a/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/profile_header_skeleton.dart b/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/profile_header_skeleton.dart index 60ee0ac0..c42c0ffb 100644 --- a/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/profile_header_skeleton.dart +++ b/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/profile_header_skeleton.dart @@ -25,18 +25,18 @@ class ProfileHeaderSkeleton extends StatelessWidget { bottom: Radius.circular(UiConstants.space6), ), ), - child: SafeArea( + child: const SafeArea( bottom: false, child: Column( children: [ // Avatar placeholder - const UiShimmerCircle(size: 112), - const SizedBox(height: UiConstants.space4), + UiShimmerCircle(size: 112), + SizedBox(height: UiConstants.space4), // Name placeholder - const UiShimmerLine(width: 160, height: 20), - const SizedBox(height: UiConstants.space2), + UiShimmerLine(width: 160, height: 20), + SizedBox(height: UiConstants.space2), // Level badge placeholder - const UiShimmerBox(width: 100, height: 24), + UiShimmerBox(width: 100, height: 24), ], ), ), diff --git a/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/profile_page_skeleton.dart b/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/profile_page_skeleton.dart index 162a61e6..d4505ff3 100644 --- a/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/profile_page_skeleton.dart +++ b/apps/mobile/packages/features/staff/profile/lib/src/presentation/widgets/profile_page_skeleton/profile_page_skeleton.dart @@ -26,13 +26,11 @@ class ProfilePageSkeleton extends StatelessWidget { // Content offset to overlap the header bottom radius Transform.translate( offset: const Offset(0, -UiConstants.space6), - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: UiConstants.space5, - ), + child: const Padding( + padding: EdgeInsets.symmetric(horizontal: UiConstants.space5), child: Column( spacing: UiConstants.space6, - children: const [ + children: [ // Reliability stats row (5 items) ReliabilityStatsSkeleton(), diff --git a/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/certificate_metadata_fields.dart b/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/certificate_metadata_fields.dart index e8849918..15d7d5ee 100644 --- a/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/certificate_metadata_fields.dart +++ b/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/certificate_metadata_fields.dart @@ -5,6 +5,7 @@ import 'package:core_localization/core_localization.dart'; /// Widget for certificate metadata input fields (name, issuer, number). class CertificateMetadataFields extends StatelessWidget { const CertificateMetadataFields({ + super.key, required this.nameController, required this.issuerController, required this.numberController, @@ -32,9 +33,7 @@ class CertificateMetadataFields extends StatelessWidget { enabled: isNewCertificate, decoration: InputDecoration( hintText: t.staff_certificates.upload_modal.name_hint, - border: OutlineInputBorder( - borderRadius: UiConstants.radiusLg, - ), + border: OutlineInputBorder(borderRadius: UiConstants.radiusLg), ), ), const SizedBox(height: UiConstants.space4), @@ -50,27 +49,20 @@ class CertificateMetadataFields extends StatelessWidget { enabled: isNewCertificate, decoration: InputDecoration( hintText: t.staff_certificates.upload_modal.issuer_hint, - border: OutlineInputBorder( - borderRadius: UiConstants.radiusLg, - ), + border: OutlineInputBorder(borderRadius: UiConstants.radiusLg), ), ), const SizedBox(height: UiConstants.space4), // Certificate Number Field - Text( - 'Certificate Number', - style: UiTypography.body2m.textPrimary, - ), + Text('Certificate Number', style: UiTypography.body2m.textPrimary), const SizedBox(height: UiConstants.space2), TextField( controller: numberController, enabled: isNewCertificate, decoration: InputDecoration( hintText: 'Enter number if applicable', - border: OutlineInputBorder( - borderRadius: UiConstants.radiusLg, - ), + border: OutlineInputBorder(borderRadius: UiConstants.radiusLg), ), ), ], diff --git a/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/certificate_upload_actions.dart b/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/certificate_upload_actions.dart index 3887e5df..e1f217a5 100644 --- a/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/certificate_upload_actions.dart +++ b/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/certificate_upload_actions.dart @@ -8,6 +8,7 @@ import '../../blocs/certificate_upload/certificate_upload_cubit.dart'; /// Widget for attestation checkbox and action buttons in certificate upload form. class CertificateUploadActions extends StatelessWidget { const CertificateUploadActions({ + super.key, required this.isAttested, required this.isFormValid, required this.isUploading, @@ -34,10 +35,9 @@ class CertificateUploadActions extends StatelessWidget { children: [ Checkbox( value: isAttested, - onChanged: (bool? val) => - BlocProvider.of(context).setAttested( - val ?? false, - ), + onChanged: (bool? val) => BlocProvider.of( + context, + ).setAttested(val ?? false), activeColor: UiColors.primary, ), Expanded( @@ -54,17 +54,11 @@ class CertificateUploadActions extends StatelessWidget { onPressed: isFormValid ? onUploadPressed : null, style: ElevatedButton.styleFrom( backgroundColor: UiColors.primary, - padding: const EdgeInsets.symmetric( - vertical: UiConstants.space4, - ), - shape: RoundedRectangleBorder( - borderRadius: UiConstants.radiusLg, - ), + padding: const EdgeInsets.symmetric(vertical: UiConstants.space4), + shape: RoundedRectangleBorder(borderRadius: UiConstants.radiusLg), ), child: isUploading - ? const CircularProgressIndicator( - color: Colors.white, - ) + ? const CircularProgressIndicator(color: Colors.white) : Text( t.staff_certificates.upload_modal.save, style: UiTypography.body1m.white, @@ -87,9 +81,7 @@ class CertificateUploadActions extends StatelessWidget { ), shape: RoundedRectangleBorder( borderRadius: UiConstants.radiusLg, - side: const BorderSide( - color: UiColors.destructive, - ), + side: const BorderSide(color: UiColors.destructive), ), ), ), diff --git a/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/expiry_date_field.dart b/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/expiry_date_field.dart index 43fd484d..bf756db1 100644 --- a/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/expiry_date_field.dart +++ b/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificate_upload_page/expiry_date_field.dart @@ -6,6 +6,7 @@ import 'package:core_localization/core_localization.dart'; /// Widget for selecting certificate expiry date. class ExpiryDateField extends StatelessWidget { const ExpiryDateField({ + super.key, required this.selectedDate, required this.onTap, }); diff --git a/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificates_skeleton/certificates_header_skeleton.dart b/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificates_skeleton/certificates_header_skeleton.dart index 7e41aad5..61c14d98 100644 --- a/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificates_skeleton/certificates_header_skeleton.dart +++ b/apps/mobile/packages/features/staff/profile_sections/compliance/certificates/lib/src/presentation/widgets/certificates_skeleton/certificates_header_skeleton.dart @@ -12,23 +12,23 @@ class CertificatesHeaderSkeleton extends StatelessWidget { width: double.infinity, padding: const EdgeInsets.all(UiConstants.space5), decoration: const BoxDecoration(color: UiColors.primary), - child: SafeArea( + child: const SafeArea( bottom: false, child: Column( children: [ - const SizedBox(height: UiConstants.space4), - const UiShimmerCircle(size: 64), - const SizedBox(height: UiConstants.space3), + SizedBox(height: UiConstants.space4), + UiShimmerCircle(size: 64), + SizedBox(height: UiConstants.space3), UiShimmerLine( width: 120, height: 14, ), - const SizedBox(height: UiConstants.space2), + SizedBox(height: UiConstants.space2), UiShimmerLine( width: 80, height: 12, ), - const SizedBox(height: UiConstants.space6), + SizedBox(height: UiConstants.space6), ], ), ), diff --git a/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/presentation/pages/form_i9_page.dart b/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/presentation/pages/form_i9_page.dart index e36c6bcb..cc031b38 100644 --- a/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/presentation/pages/form_i9_page.dart +++ b/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/presentation/pages/form_i9_page.dart @@ -178,8 +178,9 @@ class _FormI9PageState extends State { } }, builder: (BuildContext context, FormI9State state) { - if (state.status == FormI9Status.success) + if (state.status == FormI9Status.success) { return _buildSuccessView(i18n); + } return Scaffold( backgroundColor: UiColors.background, diff --git a/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/presentation/pages/form_w4_page.dart b/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/presentation/pages/form_w4_page.dart index a0b28ea0..3db67c1a 100644 --- a/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/presentation/pages/form_w4_page.dart +++ b/apps/mobile/packages/features/staff/profile_sections/compliance/tax_forms/lib/src/presentation/pages/form_w4_page.dart @@ -180,8 +180,9 @@ class _FormW4PageState extends State { } }, builder: (BuildContext context, FormW4State state) { - if (state.status == FormW4Status.success) + if (state.status == FormW4Status.success) { return _buildSuccessView(i18n); + } return Scaffold( backgroundColor: UiColors.background, diff --git a/apps/mobile/packages/features/staff/profile_sections/onboarding/profile_info/lib/src/presentation/widgets/personal_info_page/tappable_row.dart b/apps/mobile/packages/features/staff/profile_sections/onboarding/profile_info/lib/src/presentation/widgets/personal_info_page/tappable_row.dart index 6d92aa9e..1a9df919 100644 --- a/apps/mobile/packages/features/staff/profile_sections/onboarding/profile_info/lib/src/presentation/widgets/personal_info_page/tappable_row.dart +++ b/apps/mobile/packages/features/staff/profile_sections/onboarding/profile_info/lib/src/presentation/widgets/personal_info_page/tappable_row.dart @@ -39,11 +39,11 @@ class TappableRow extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, spacing: UiConstants.space3, - children: [ + children: [ FieldLabel(text: i18n.locations_label), GestureDetector( onTap: enabled ? onTap : null, - child: Container( + child: SizedBox( width: double.infinity, child: Row( children: [ diff --git a/apps/mobile/packages/features/staff/staff_main/lib/src/data/repositories/staff_main_repository_impl.dart b/apps/mobile/packages/features/staff/staff_main/lib/src/data/repositories/staff_main_repository_impl.dart index 01f76599..c2b78c96 100644 --- a/apps/mobile/packages/features/staff/staff_main/lib/src/data/repositories/staff_main_repository_impl.dart +++ b/apps/mobile/packages/features/staff/staff_main/lib/src/data/repositories/staff_main_repository_impl.dart @@ -1,7 +1,6 @@ import 'package:krow_core/core.dart'; import 'package:krow_domain/krow_domain.dart'; - -import '../../domain/repositories/staff_main_repository_interface.dart'; +import 'package:staff_main/src/domain/repositories/staff_main_repository_interface.dart'; /// V2 API implementation of [StaffMainRepositoryInterface]. ///