Merge pull request #388 from Oloodi/feature/centralized-data-error-handling

Fix: Resolve critical bugs and linting issues (concurrency, syntax, dead code)
This commit is contained in:
Achintha Isuru
2026-02-10 11:10:03 -05:00
committed by GitHub
46 changed files with 4057 additions and 1299 deletions

BIN
apps/mobile/analysis.txt Normal file

Binary file not shown.

BIN
apps/mobile/analysis_2.txt Normal file

Binary file not shown.

BIN
apps/mobile/analysis_3.txt Normal file

Binary file not shown.

View File

@@ -0,0 +1,832 @@
Resolving dependencies...
Downloading packages...
_fe_analyzer_shared 91.0.0 (94.0.0 available)
analyzer 8.4.1 (10.0.2 available)
archive 3.6.1 (4.0.7 available)
bloc 8.1.4 (9.2.0 available)
bloc_test 9.1.7 (10.0.0 available)
build_runner 2.10.5 (2.11.0 available)
characters 1.4.0 (1.4.1 available)
code_assets 0.19.10 (1.0.0 available)
dart_style 3.1.3 (3.1.5 available)
fl_chart 0.66.2 (1.1.1 available)
flutter_bloc 8.1.6 (9.1.1 available)
geolocator 10.1.1 (14.0.2 available)
geolocator_android 4.6.2 (5.0.2 available)
geolocator_web 2.2.1 (4.1.3 available)
get_it 7.7.0 (9.2.0 available)
google_fonts 7.0.2 (8.0.1 available)
googleapis_auth 1.6.0 (2.0.0 available)
grpc 3.2.4 (5.1.0 available)
hooks 0.20.5 (1.0.1 available)
image 4.3.0 (4.7.2 available)
json_annotation 4.9.0 (4.10.0 available)
lints 6.0.0 (6.1.0 available)
matcher 0.12.17 (0.12.18 available)
material_color_utilities 0.11.1 (0.13.0 available)
melos 7.3.0 (7.4.0 available)
meta 1.17.0 (1.18.1 available)
native_toolchain_c 0.17.2 (0.17.4 available)
objective_c 9.2.2 (9.3.0 available)
permission_handler 11.4.0 (12.0.1 available)
permission_handler_android 12.1.0 (13.0.1 available)
protobuf 3.1.0 (6.0.0 available)
shared_preferences_android 2.4.18 (2.4.20 available)
slang 4.12.0 (4.12.1 available)
slang_build_runner 4.12.0 (4.12.1 available)
slang_flutter 4.12.0 (4.12.1 available)
source_span 1.10.1 (1.10.2 available)
test 1.26.3 (1.29.0 available)
test_api 0.7.7 (0.7.9 available)
test_core 0.6.12 (0.6.15 available)
url_launcher_ios 6.3.6 (6.4.0 available)
Got dependencies!
40 packages have newer versions incompatible with dependency constraints.
Try `flutter pub outdated` for more information.
Analyzing mobile...
info - Library names are not necessary - packages\core\lib\core.dart:1:9 - unnecessary_library_name
info - The imported package 'flutter_bloc' isn't a dependency of the importing package - packages\core\lib\src\presentation\mixins\bloc_error_handler.dart:2:8 - depend_on_referenced_packages
info - The imported package 'krow_domain' isn't a dependency of the importing package - packages\core\lib\src\presentation\mixins\bloc_error_handler.dart:3:8 - depend_on_referenced_packages
info - The imported package 'flutter_bloc' isn't a dependency of the importing package - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:2:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:31:3 - sort_constructors_first
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:37:17 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:46:16 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:57:17 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:57:32 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:68:16 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:98:16 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:107:21 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:107:32 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:99:47 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:128:51 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:244:55 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:246:64 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:249:49 - deprecated_member_use
info - Dangling library doc comment - packages\core\lib\src\routing\routing.dart:1:1 - dangling_library_doc_comments
info - The imported package 'krow_domain' isn't a dependency of the importing package - packages\core\lib\src\routing\staff\navigator.dart:2:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\bloc\locale_event.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\data\datasources\locale_local_data_source.dart:18:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\get_default_locale_use_case.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\get_locale_use_case.dart:13:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\get_supported_locales_use_case.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\set_locale_use_case.dart:13:3 - sort_constructors_first
info - The imported package 'firebase_core' isn't a dependency of the importing package - packages\data_connect\lib\src\mixins\data_error_handler.dart:4:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\client_session_store.dart:11:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\client_session_store.dart:26:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\client_session_store.dart:48:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\staff_session_store.dart:8:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\staff_session_store.dart:30:3 - sort_constructors_first
info - Statements in an if should be enclosed in a block - packages\design_system\lib\src\ui_theme.dart:85:19 - curly_braces_in_flow_control_structures
warning - Missing type annotation - packages\design_system\lib\src\ui_theme.dart:258:27 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_app_bar.dart:39:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:43:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:61:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:61:3 - prefer_const_constructors_in_immutables
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:79:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:79:3 - prefer_const_constructors_in_immutables
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:97:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:97:3 - prefer_const_constructors_in_immutables
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:115:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:115:3 - prefer_const_constructors_in_immutables
info - Type could be non-nullable - packages\design_system\lib\src\widgets\ui_button.dart:135:24 - unnecessary_nullable_for_final_variable_declarations
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_chip.dart:57:9 - sort_constructors_first
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:38:21 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:45:27 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:50:45 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:82:5 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_icon_button.dart:30:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_icon_button.dart:42:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_icon_button.dart:53:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_step_indicator.dart:18:9 - sort_constructors_first
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_step_indicator.dart:38:19 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_success_snackbar.dart:30:21 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\design_system\lib\src\widgets\ui_success_snackbar.dart:31:13 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_text_field.dart:59:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:5:68 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:6:16 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:11:18 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:16:16 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:25:5 - always_specify_types
warning - Unused import: '../../entities/shifts/shift.dart' - packages\domain\lib\src\adapters\clock_in\clock_in_adapter.dart:1:8 - unused_import
warning - Missing type annotation - packages\domain\lib\src\adapters\profile\bank_account_adapter.dart:34:10 - always_specify_types
info - Angle brackets will be interpreted as HTML - packages\domain\lib\src\adapters\profile\experience_adapter.dart:3:62 - unintended_html_in_doc_comment
warning - Unnecessary cast - packages\domain\lib\src\adapters\profile\tax_form_adapter.dart:21:53 - unnecessary_cast
warning - Missing type annotation - packages\domain\lib\src\adapters\profile\tax_form_adapter.dart:21:65 - always_specify_types
info - The imported package 'intl' isn't a dependency of the importing package - packages\domain\lib\src\adapters\shifts\shift_adapter.dart:1:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\availability\availability_slot.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\availability\availability_slot.dart:32:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\availability\day_availability.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\availability\day_availability.dart:14:18 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\entities\availability\day_availability.dart:30:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\clock_in\attendance_status.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\clock_in\attendance_status.dart:20:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\financial\payment_summary.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\financial\payment_summary.dart:18:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\financial\time_card.dart:50:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\financial\time_card.dart:65:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\attire_item.dart:23:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\experience_skill.dart:21:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\experience_skill.dart:25:49 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\industry.dart:12:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\industry.dart:16:42 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\staff_document.dart:38:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\staff_document.dart:50:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\tax_form.dart:19:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\tax_form.dart:26:21 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\entities\profile\tax_form.dart:32:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\shifts\shift.dart:33:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\shifts\shift.dart:65:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\shifts\shift.dart:102:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\shifts\shift.dart:105:30 - always_specify_types
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:35:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:44:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:53:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:62:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:71:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:80:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:89:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:98:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:107:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:116:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:134:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:143:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:152:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:170:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:179:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:188:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:197:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:206:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:224:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:233:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:242:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:260:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:269:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:278:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:291:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:300:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:309:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:318:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:327:9 - use_super_parameters
warning - The name GoogleOnlyAccountException is shown, but isn't used - packages\features\client\authentication\lib\src\data\repositories_impl\auth_repository_impl.dart:16:9 - unused_shown_name
warning - The value of the local variable 'newUserData' isn't used - packages\features\client\authentication\lib\src\data\repositories_impl\auth_repository_impl.dart:266:35 - unused_local_variable
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:137:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:152:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:200:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:210:47 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:241:35 - deprecated_member_use
warning - Missing type annotation - packages\features\client\authentication\lib\src\presentation\pages\client_sign_up_page.dart:44:12 - always_specify_types
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:16:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'BillingBloc' - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:45:11 - undefined_method
warning - The value of the local variable 'currentBill' isn't used - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:57:22 - unused_local_variable
error - The method 'handleError' isn't defined for the type 'BillingBloc' - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:97:11 - undefined_method
error - Expected a method, getter, setter or operator declaration - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:172:1 - expected_executable
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\client\client_coverage\lib\src\presentation\blocs\coverage_bloc.dart:4:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\client\client_coverage\lib\src\presentation\blocs\coverage_bloc.dart:18:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'CoverageBloc' - packages\features\client\client_coverage\lib\src\presentation\blocs\coverage_bloc.dart:45:11 - undefined_method
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:76:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:108:61 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:156:64 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:171:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:189:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_calendar_selector.dart:110:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_calendar_selector.dart:135:58 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_calendar_selector.dart:173:45 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:76:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:112:60 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:130:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:142:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:159:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:320:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:322:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:331:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:333:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:341:31 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:343:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:352:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:354:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:362:29 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:364:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:372:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:374:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:382:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:384:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:394:29 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:396:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\late_workers_alert.dart:22:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\late_workers_alert.dart:25:39 - deprecated_member_use
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\client\client_main\lib\src\client_main_module.dart:6:8 - depend_on_referenced_packages
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\client\client_main\lib\src\presentation\blocs\client_main_cubit.dart:3:8 - depend_on_referenced_packages
warning - Missing type annotation - packages\features\client\create_order\lib\src\data\repositories_impl\client_create_order_repository_impl.dart:30:12 - always_specify_types
info - Don't invoke 'print' in production code - packages\features\client\create_order\lib\src\data\repositories_impl\client_create_order_repository_impl.dart:131:7 - avoid_print
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\client\create_order\lib\src\presentation\blocs\client_create_order_bloc.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\client\create_order\lib\src\presentation\blocs\client_create_order_bloc.dart:11:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'ClientCreateOrderBloc' - packages\features\client\create_order\lib\src\presentation\blocs\client_create_order_bloc.dart:22:11 - undefined_method
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:3:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:13:10 - mixin_of_non_class
error - The method 'handleErrorWithResult' isn't defined for the type 'OneTimeOrderBloc' - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:34:41 - undefined_method
error - The method 'handleErrorWithResult' isn't defined for the type 'OneTimeOrderBloc' - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:57:55 - undefined_method
warning - The member 'emit' can only be used within 'package:bloc/src/bloc.dart' or a test - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:71:23 - invalid_use_of_visible_for_testing_member
warning - The member 'emit' can only be used within 'package:bloc/src/bloc.dart' or a test - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:75:7 - invalid_use_of_visible_for_testing_member
error - The method 'handleErrorWithResult' isn't defined for the type 'OneTimeOrderBloc' - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:80:53 - undefined_method
error - The method 'handleError' isn't defined for the type 'OneTimeOrderBloc' - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:226:11 - undefined_method
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\client\create_order\lib\src\presentation\blocs\rapid_order_bloc.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\client\create_order\lib\src\presentation\blocs\rapid_order_bloc.dart:10:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'RapidOrderBloc' - packages\features\client\create_order\lib\src\presentation\blocs\rapid_order_bloc.dart:71:13 - undefined_method
info - Don't invoke 'print' in production code - packages\features\client\create_order\lib\src\presentation\widgets\rapid_order\rapid_order_view.dart:292:21 - avoid_print
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\client\home\lib\src\presentation\blocs\client_home_bloc.dart:3:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\client\home\lib\src\presentation\blocs\client_home_bloc.dart:13:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'ClientHomeBloc' - packages\features\client\home\lib\src\presentation\blocs\client_home_bloc.dart:39:11 - undefined_method
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:25:10 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:42:17 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:42:29 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:45:17 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:45:29 - always_specify_types
warning - The name HubCreationFailedException is shown, but isn't used - packages\features\client\hubs\lib\src\data\repositories_impl\hub_repository_impl.dart:12:9 - unused_shown_name
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\domain\usecases\sign_out_usecase.dart:13:3 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\client\settings\lib\src\presentation\blocs\client_settings_bloc.dart:3:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\client\settings\lib\src\presentation\blocs\client_settings_bloc.dart:11:10 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\presentation\blocs\client_settings_bloc.dart:14:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'ClientSettingsBloc' - packages\features\client\settings\lib\src\presentation\blocs\client_settings_bloc.dart:25:11 - undefined_method
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\presentation\blocs\client_settings_state.dart:25:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\client\settings\lib\src\presentation\widgets\client_settings_page\settings_profile_header.dart:80:23 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\presentation\widgets\client_settings_page\settings_quick_links.dart:69:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:15:3 - sort_constructors_first
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:43:5 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:66:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:118:5 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:124:7 - avoid_print
info - Constructor declarations should be before non-constructor declarations - packages\features\client\view_orders\lib\src\domain\usecases\get_orders_use_case.dart:15:3 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:3:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:15:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'ViewOrdersCubit' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:41:11 - undefined_method
error - The method 'handleErrorWithResult' isn't defined for the type 'ViewOrdersCubit' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:144:11 - undefined_method
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:248:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:257:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:266:7 - avoid_print
warning - The declaration '_applyApplications' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:323:19 - unused_element
warning - The declaration '_isSameDay' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:357:8 - unused_element
warning - The declaration '_calculateCalendarDays' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:361:18 - unused_element
warning - The declaration '_calculateFilteredOrders' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:376:19 - unused_element
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:402:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:410:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:418:7 - avoid_print
warning - The declaration '_calculateCategoryCount' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:426:7 - unused_element
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:427:9 - undefined_identifier
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:431:14 - undefined_identifier
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:434:14 - undefined_identifier
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:438:14 - undefined_identifier
warning - The declaration '_calculateUpNextCount' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:445:7 - unused_element
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:446:9 - undefined_identifier
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:450:14 - undefined_identifier
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:452:12 - undefined_identifier
error - Expected a method, getter, setter or operator declaration - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:461:1 - expected_executable
warning - The declaration '_formatDate' isn't referenced - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:84:10 - unused_element
warning - The receiver can't be null, so the null-aware operator '?.' is unnecessary - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:833:55 - invalid_null_aware_operator
info - Type could be non-nullable - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:872:7 - unnecessary_nullable_for_final_variable_declarations
info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:1615:39 - use_build_context_synchronously
info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:1635:39 - use_build_context_synchronously
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\data\repositories_impl\place_repository_impl.dart:9:3 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\data\repositories_impl\place_repository_impl.dart:13:31 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\data\repositories_impl\place_repository_impl.dart:40:21 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\data\repositories_impl\profile_setup_repository_impl.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\arguments\sign_in_with_phone_arguments.dart:13:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\arguments\verify_otp_arguments.dart:21:9 - sort_constructors_first
warning - Unused import: 'package:krow_domain/krow_domain.dart' - packages\features\staff\authentication\lib\src\domain\repositories\profile_setup_repository.dart:1:8 - unused_import
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\search_cities_usecase.dart:6:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\sign_in_with_phone_usecase.dart:15:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\submit_profile_setup_usecase.dart:6:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\verify_otp_usecase.dart:15:3 - sort_constructors_first
info - The imported package 'bloc' isn't a dependency of the importing package - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:3:8 - depend_on_referenced_packages
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:4:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:15:10 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:29:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'AuthBloc' - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:113:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'AuthBloc' - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:195:11 - undefined_method
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:19:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:39:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:57:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:67:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:78:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:89:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_state.dart:49:9 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:15:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'ProfileSetupBloc' - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:91:11 - undefined_method
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:117:48 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:124:7 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:128:48 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:136:46 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:17:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:29:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:41:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:53:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:65:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:77:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:89:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_state.dart:36:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\pages\phone_verification_page.dart:23:9 - sort_constructors_first
info - 'WillPopScope' is deprecated and shouldn't be used. Use PopScope instead. The Android predictive back feature will not work with WillPopScope. This feature was deprecated after v3.12.0-1.0.pre - packages\features\staff\authentication\lib\src\presentation\pages\phone_verification_page.dart:138:24 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\authentication\lib\src\presentation\pages\profile_setup_page.dart:157:27 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\common\section_title_subtitle.dart:12:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_actions.dart:9:9 - sort_constructors_first
info - Unnecessary instance of 'Container' - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:9:12 - avoid_unnecessary_containers
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:11:19 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:25:50 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:32:36 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:32:45 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:32:52 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:43:23 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:57:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:66:43 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification.dart:24:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:20:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:31:52 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:35:39 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:75:21 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_resend_section.dart:14:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_resend_section.dart:35:5 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_verification_actions.dart:18:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_verification_actions.dart:38:17 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_verification_header.dart:11:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\phone_input\phone_input_actions.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\phone_input\phone_input_form_field.dart:20:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_basic_info.dart:21:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_experience.dart:22:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_header.dart:17:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:24:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:92:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:92:33 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:94:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:94:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:104:28 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:106:41 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:116:36 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:116:45 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:117:31 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:117:40 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:118:19 - always_specify_types
info - Library names are not necessary - packages\features\staff\authentication\lib\staff_authentication.dart:1:9 - unnecessary_library_name
info - Statements in an if should be enclosed in a block - packages\features\staff\availability\lib\src\data\repositories_impl\availability_repository_impl.dart:148:28 - curly_braces_in_flow_control_structures
info - Statements in an if should be enclosed in a block - packages\features\staff\availability\lib\src\data\repositories_impl\availability_repository_impl.dart:149:35 - curly_braces_in_flow_control_structures
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\availability\lib\src\presentation\blocs\availability_bloc.dart:5:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\availability\lib\src\presentation\blocs\availability_bloc.dart:10:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'AvailabilityBloc' - packages\features\staff\availability\lib\src\presentation\blocs\availability_bloc.dart:33:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'AvailabilityBloc' - packages\features\staff\availability\lib\src\presentation\blocs\availability_bloc.dart:105:13 - undefined_method
error - The method 'handleError' isn't defined for the type 'AvailabilityBloc' - packages\features\staff\availability\lib\src\presentation\blocs\availability_bloc.dart:157:13 - undefined_method
error - The method 'handleError' isn't defined for the type 'AvailabilityBloc' - packages\features\staff\availability\lib\src\presentation\blocs\availability_bloc.dart:197:13 - undefined_method
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:100:45 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:122:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:192:30 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:193:38 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:224:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:310:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:341:42 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:383:33 - deprecated_member_use
info - 'activeColor' is deprecated and shouldn't be used. Use activeThumbColor instead. This feature was deprecated after v3.31.0-2.0.pre - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:418:17 - deprecated_member_use
info - Unnecessary use of 'toList' in a spread - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:431:14 - unnecessary_to_list_in_spreads
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:484:36 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:485:40 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:587:35 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\availability\lib\staff_availability.dart:1:9 - unnecessary_library_name
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\data\repositories_impl\clock_in_repository_impl.dart:109:78 - always_specify_types
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:3:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:15:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'ClockInBloc' - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:51:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'ClockInBloc' - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:90:11 - undefined_method
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:105:11 - unawaited_futures
error - The method 'handleError' isn't defined for the type 'ClockInBloc' - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:205:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'ClockInBloc' - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:228:11 - undefined_method
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\clock_in\lib\src\presentation\blocs\clock_in_cubit.dart:89:7 - unawaited_futures
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\blocs\clock_in_cubit.dart:130:11 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\blocs\clock_in_cubit.dart:147:11 - always_specify_types
warning - The value of the local variable 'checkInStr' isn't used - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:68:24 - unused_local_variable
warning - The value of the local variable 'checkOutStr' isn't used - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:71:24 - unused_local_variable
warning - The declaration '_buildModeTab' isn't referenced - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:465:10 - unused_element
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:483:43 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:523:43 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:573:33 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:34:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:100:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:106:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:112:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:118:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:175:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:273:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:375:23 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:386:53 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:427:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:430:51 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:461:51 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:464:53 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:512:56 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:541:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\date_selector.dart:19:34 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\date_selector.dart:44:60 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\date_selector.dart:70:44 - deprecated_member_use
info - Unnecessary use of multiple underscores - packages\features\staff\clock_in\lib\src\presentation\widgets\location_map_placeholder.dart:30:24 - unnecessary_underscores
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\location_map_placeholder.dart:59:41 - deprecated_member_use
warning - The value of the field '_tookLunch' isn't used - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:15:9 - unused_field
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:187:60 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:200:60 - always_specify_types
info - 'groupValue' is deprecated and shouldn't be used. Use a RadioGroup ancestor to manage group value instead. This feature was deprecated after v3.32.0-0.0.pre - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:242:16 - deprecated_member_use
info - 'onChanged' is deprecated and shouldn't be used. Use RadioGroup to handle value change instead. This feature was deprecated after v3.32.0-0.0.pre - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:243:16 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:59:7 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:84:11 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:99:34 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:152:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:168:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:200:47 - deprecated_member_use
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\home\lib\src\presentation\blocs\home_cubit.dart:3:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\home\lib\src\presentation\blocs\home_cubit.dart:12:47 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'HomeCubit' - packages\features\staff\home\lib\src\presentation\blocs\home_cubit.dart:24:11 - undefined_method
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\home_header.dart:36:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\home_header.dart:41:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\pending_payment_card.dart:24:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\pending_payment_card.dart:24:75 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\pending_payment_card.dart:29:54 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\placeholder_banner.dart:32:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\quick_action_item.dart:34:46 - deprecated_member_use
warning - Dead code - packages\features\staff\home\lib\src\presentation\widgets\home_page\recommended_shift_card.dart:193:45 - dead_code
warning - The left operand can't be null, so the right operand is never executed - packages\features\staff\home\lib\src\presentation\widgets\home_page\recommended_shift_card.dart:193:48 - dead_null_aware_expression
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\section_header.dart:52:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\section_header.dart:55:45 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:32:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:42:34 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:61:42 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:62:37 - deprecated_member_use
info - 'background' is deprecated and shouldn't be used. Use surface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\benefits_widget.dart:20:46 - deprecated_member_use
info - 'onBackground' is deprecated and shouldn't be used. Use onSurface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\benefits_widget.dart:25:50 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\benefits_widget.dart:25:63 - deprecated_member_use
info - 'background' is deprecated and shouldn't be used. Use surface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:56:48 - deprecated_member_use
info - 'onBackground' is deprecated and shouldn't be used. Use onSurface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:61:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:61:65 - deprecated_member_use
info - 'surfaceVariant' is deprecated and shouldn't be used. Use surfaceContainerHighest instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:78:56 - deprecated_member_use
info - 'background' is deprecated and shouldn't be used. Use surface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:55:48 - deprecated_member_use
info - 'onBackground' is deprecated and shouldn't be used. Use onSurface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:60:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:60:65 - deprecated_member_use
info - 'surfaceVariant' is deprecated and shouldn't be used. Use surfaceContainerHighest instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:77:56 - deprecated_member_use
info - Import of a library in the 'lib/src' directory of another package - packages\features\staff\payments\lib\src\payments_module.dart:1:8 - implementation_imports
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\payments\lib\src\presentation\blocs\payments\payments_bloc.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\payments\lib\src\presentation\blocs\payments\payments_bloc.dart:11:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'PaymentsBloc' - packages\features\staff\payments\lib\src\presentation\blocs\payments\payments_bloc.dart:27:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'PaymentsBloc' - packages\features\staff\payments\lib\src\presentation\blocs\payments\payments_bloc.dart:53:13 - undefined_method
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\pages\payments_page.dart:114:41 - deprecated_member_use
warning - The value of the local variable 'maxX' isn't used - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:36:18 - unused_local_variable
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:47:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:105:54 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:124:12 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\payment_history_item.dart:37:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\payment_stats_card.dart:26:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\pending_pay_card.dart:27:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\data\repositories\profile_repository_impl.dart:34:5 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\data\repositories\profile_repository_impl.dart:39:5 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\domain\usecases\get_profile_usecase.dart:18:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\domain\usecases\sign_out_usecase.dart:19:9 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:11:10 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:16:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'ProfileCubit' - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:27:11 - undefined_method
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:30:9 - always_specify_types
error - The method 'handleError' isn't defined for the type 'ProfileCubit' - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:50:11 - undefined_method
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\blocs\profile_state.dart:36:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\blocs\profile_state.dart:56:30 - always_specify_types
warning - Duplicate import - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:17:8 - duplicate_import
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:64:20 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:64:29 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:69:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:69:28 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:86:11 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:94:25 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:108:33 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:125:37 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:146:37 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:150:41 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:164:37 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:188:37 - always_specify_types
error - The getter 'globe' isn't defined for the type 'UiIcons' - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:190:45 - undefined_getter
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:195:45 - always_specify_types
warning - Unused import: 'package:flutter_bloc/flutter_bloc.dart' - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:4:8 - unused_import
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:18:16 - prefer_const_constructors
error - The getter 'surface' isn't defined for the type 'UiColors' - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:20:25 - undefined_getter
error - The argument type 'BorderRadius' can't be assigned to the parameter type 'double'. - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:21:66 - argument_type_not_assignable
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:26:19 - always_specify_types
error - The getter 'headline4b' isn't defined for the type 'UiTypography' - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:29:33 - undefined_getter
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:32:11 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:38:11 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:44:11 - prefer_const_constructors
error - The argument type 'BorderRadius' can't be assigned to the parameter type 'double'. - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:72:43 - argument_type_not_assignable
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:74:18 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:79:48 - deprecated_member_use
error - The argument type 'BorderRadius' can't be assigned to the parameter type 'double'. - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:80:47 - argument_type_not_assignable
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:88:21 - always_specify_types
error - The getter 'iconSizeMd' isn't defined for the type 'UiConstants' - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:99:35 - undefined_getter
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:12:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:16:5 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:31:22 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:34:25 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:36:17 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:23:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:33:5 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:37:16 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:43:19 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:45:23 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:46:19 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:52:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:56:25 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:68:57 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:74:13 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:78:25 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:82:28 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:88:31 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:90:41 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:94:32 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:96:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:106:59 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:124:43 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:126:53 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:149:32 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:151:52 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:164:13 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:171:13 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:173:24 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:178:40 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:22:17 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:22:26 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:23:9 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:24:9 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:25:9 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:32:35 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:13:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:31:18 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:35:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:40:29 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:45:49 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:51:21 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:53:32 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:79:46 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:18:5 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:19:5 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:22:16 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:24:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:29:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:32:23 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:47:11 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:58:22 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:15:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:27:16 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:32:20 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:34:40 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:42:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:86:19 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:91:39 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:97:11 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\section_title.dart:10:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\section_title.dart:16:16 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\section_title.dart:17:15 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\data\repositories_impl\certificates_repository_impl.dart:23:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\domain\usecases\get_certificates_usecase.dart:15:3 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_cubit.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_cubit.dart:8:10 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_cubit.dart:11:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'CertificatesCubit' - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_cubit.dart:18:11 - undefined_method
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_state.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_state.dart:30:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_state.dart:34:15 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\add_certificate_card.dart:8:9 - sort_constructors_first
info - The imported package 'intl' isn't a dependency of the importing package - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:3:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:14:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:48:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:62:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:99:46 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:416:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_upload_modal.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:10:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:42:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:73:55 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:103:45 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\compliance\certificates\lib\staff_certificates.dart:1:9 - unnecessary_library_name
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\data\repositories_impl\documents_repository_impl.dart:14:3 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\documents\lib\src\data\repositories_impl\documents_repository_impl.dart:29:12 - always_specify_types
warning - Dead code - packages\features\staff\profile_sections\compliance\documents\lib\src\data\repositories_impl\documents_repository_impl.dart:52:5 - dead_code
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\domain\usecases\get_documents_usecase.dart:11:3 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\blocs\documents\documents_cubit.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\blocs\documents\documents_cubit.dart:8:10 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\blocs\documents\documents_cubit.dart:11:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'DocumentsCubit' - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\blocs\documents\documents_cubit.dart:15:11 - undefined_method
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\blocs\documents\documents_state.dart:11:9 - sort_constructors_first
warning - Unused import: 'package:krow_core/core.dart' - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\pages\documents_page.dart:11:8 - unused_import
info - Constructors for public widgets should have a named 'key' parameter - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\pages\documents_page.dart:15:7 - use_key_in_widget_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:12:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:35:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:117:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:122:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:127:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:132:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:137:33 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\documents_progress_card.dart:17:9 - sort_constructors_first
info - Library names are not necessary - packages\features\staff\profile_sections\compliance\documents\lib\staff_documents.dart:1:9 - unnecessary_library_name
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\mappers\tax_form_mapper.dart:9:43 - always_specify_types
info - The type of the right operand ('TaxFormType') isn't a subtype or a supertype of the left operand ('EnumValue<TaxFormType>') - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\mappers\tax_form_mapper.dart:47:23 - unrelated_type_equality_checks
info - Statements in an if should be enclosed in a block - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\repositories\tax_forms_repository_impl.dart:194:41 - curly_braces_in_flow_control_structures
info - Statements in an if should be enclosed in a block - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\repositories\tax_forms_repository_impl.dart:195:47 - curly_braces_in_flow_control_structures
info - Statements in an if should be enclosed in a block - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\repositories\tax_forms_repository_impl.dart:196:44 - curly_braces_in_flow_control_structures
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\get_tax_forms_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\save_i9_form_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\save_w4_form_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\submit_i9_form_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\submit_w4_form_usecase.dart:7:3 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:2:8 - uri_does_not_exist
info - The imported package 'uuid' isn't a dependency of the importing package - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:4:8 - depend_on_referenced_packages
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:9:51 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:13:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'FormI9Cubit' - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:99:11 - undefined_method
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:102:47 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_state.dart:38:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_state.dart:117:30 - always_specify_types
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\tax_forms\tax_forms_cubit.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\tax_forms\tax_forms_cubit.dart:8:10 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\tax_forms\tax_forms_cubit.dart:11:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'TaxFormsCubit' - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\tax_forms\tax_forms_cubit.dart:15:11 - undefined_method
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\tax_forms\tax_forms_state.dart:11:9 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:2:8 - uri_does_not_exist
info - The imported package 'uuid' isn't a dependency of the importing package - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:4:8 - depend_on_referenced_packages
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:9:51 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:13:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'FormW4Cubit' - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:92:11 - undefined_method
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:95:47 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_state.dart:32:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_state.dart:92:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:12:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:212:81 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:232:50 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:249:77 - deprecated_member_use
info - 'value' is deprecated and shouldn't be used. Use initialValue instead. This will set the initial value for the form field. This feature was deprecated after v3.33.0-1.0.pre - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:465:21 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:12:9 - sort_constructors_first
warning - The value of the field '_usStates' isn't used - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:27:22 - unused_field
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:258:81 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:278:50 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:295:77 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:446:18 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:40:47 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:148:11 - always_specify_types
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:150:53 - unawaited_futures
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:153:11 - always_specify_types
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:155:53 - unawaited_futures
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:174:41 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\compliance\tax_forms\lib\staff_tax_forms.dart:1:9 - unnecessary_library_name
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\arguments\add_bank_account_params.dart:9:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\arguments\add_bank_account_params.dart:12:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\usecases\add_bank_account_usecase.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\usecases\get_bank_accounts_usecase.dart:9:3 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_cubit.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_cubit.dart:10:10 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_cubit.dart:14:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'BankAccountCubit' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_cubit.dart:23:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'BankAccountCubit' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_cubit.dart:73:11 - undefined_method
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_state.dart:12:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_state.dart:14:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_state.dart:34:30 - always_specify_types
warning - Unused import: 'package:krow_core/core.dart' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:11:8 - unused_import
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:146:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:202:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:242:37 - deprecated_member_use
warning - Unused import: 'package:flutter_modular/flutter_modular.dart' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:2:8 - unused_import
warning - Unused import: '../blocs/bank_account_cubit.dart' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:4:8 - unused_import
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:11:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:125:34 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\finances\staff_bank_account\lib\staff_bank_account.dart:1:9 - unnecessary_library_name
info - The imported package 'firebase_auth' isn't a dependency of the importing package - packages\features\staff\profile_sections\finances\time_card\lib\src\data\repositories_impl\time_card_repository_impl.dart:1:8 - depend_on_referenced_packages
info - The imported package 'firebase_data_connect' isn't a dependency of the importing package - packages\features\staff\profile_sections\finances\time_card\lib\src\data\repositories_impl\time_card_repository_impl.dart:2:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\data\repositories_impl\time_card_repository_impl.dart:17:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\domain\arguments\get_time_cards_arguments.dart:8:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\domain\arguments\get_time_cards_arguments.dart:11:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\domain\usecases\get_time_cards_usecase.dart:10:3 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_bloc.dart:3:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_bloc.dart:13:10 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_bloc.dart:16:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'TimeCardBloc' - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_bloc.dart:27:11 - undefined_method
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:6:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:14:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:19:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:22:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:6:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:17:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:25:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:29:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:31:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:30:12 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:53:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:53:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:65:29 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\month_selector.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\month_selector.dart:29:19 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:17:17 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:30:27 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:42:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:19:17 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:45:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:62:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:64:23 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:15:5 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:22:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:27:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:32:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:37:41 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:43:5 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:54:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:58:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:61:27 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:98:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:116:25 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:139:7 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:141:9 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:155:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:161:17 - always_specify_types
info - Library names are not necessary - packages\features\staff\profile_sections\finances\time_card\lib\src\staff_time_card_module.dart:1:9 - unnecessary_library_name
info - The imported package 'firebase_auth' isn't a dependency of the importing package - packages\features\staff\profile_sections\finances\time_card\lib\src\staff_time_card_module.dart:3:8 - depend_on_referenced_packages
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\staff_time_card_module.dart:45:15 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\data\repositories_impl\attire_repository_impl.dart:15:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\arguments\save_attire_arguments.dart:12:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\arguments\upload_attire_photo_arguments.dart:12:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\usecases\get_attire_options_usecase.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\usecases\save_attire_usecase.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\usecases\upload_attire_photo_usecase.dart:10:3 - sort_constructors_first
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:13:10 - mixin_of_non_class
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:18:3 - sort_constructors_first
error - The method 'handleError' isn't defined for the type 'AttireCubit' - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:28:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'AttireCubit' - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:89:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'AttireCubit' - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:141:11 - undefined_method
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_state.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attestation_checkbox.dart:9:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_bottom_bar.dart:12:9 - sort_constructors_first
info - The imported package 'lucide_icons' isn't a dependency of the importing package - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:3:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:15:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:56:46 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:156:46 - deprecated_member_use
info - The imported package 'lucide_icons' isn't a dependency of the importing package - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_info_card.dart:3:8 - depend_on_referenced_packages
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_info_card.dart:14:33 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\onboarding\attire\lib\staff_attire.dart:1:9 - unnecessary_library_name
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\onboarding\emergency_contact\lib\src\presentation\blocs\emergency_contact_bloc.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\onboarding\emergency_contact\lib\src\presentation\blocs\emergency_contact_bloc.dart:17:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'EmergencyContactBloc' - packages\features\staff\profile_sections\onboarding\emergency_contact\lib\src\presentation\blocs\emergency_contact_bloc.dart:39:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'EmergencyContactBloc' - packages\features\staff\profile_sections\onboarding\emergency_contact\lib\src\presentation\blocs\emergency_contact_bloc.dart:91:11 - undefined_method
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\emergency_contact\lib\src\presentation\widgets\emergency_contact_info_banner.dart:12:32 - deprecated_member_use
info - Constructors in '@immutable' classes should be declared as 'const' - packages\features\staff\profile_sections\onboarding\experience\lib\src\domain\arguments\save_experience_arguments.dart:7:3 - prefer_const_constructors_in_immutables
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\onboarding\experience\lib\src\presentation\blocs\experience_bloc.dart:3:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\onboarding\experience\lib\src\presentation\blocs\experience_bloc.dart:97:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'ExperienceBloc' - packages\features\staff\profile_sections\onboarding\experience\lib\src\presentation\blocs\experience_bloc.dart:126:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'ExperienceBloc' - packages\features\staff\profile_sections\onboarding\experience\lib\src\presentation\blocs\experience_bloc.dart:191:11 - undefined_method
warning - The declaration '_buildCustomSkillsList' isn't referenced - packages\features\staff\profile_sections\onboarding\experience\lib\src\presentation\pages\experience_page.dart:140:10 - unused_element
info - Library names are not necessary - packages\features\staff\profile_sections\onboarding\experience\lib\staff_profile_experience.dart:1:9 - unnecessary_library_name
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\blocs\personal_info_bloc.dart:3:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\blocs\personal_info_bloc.dart:17:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'PersonalInfoBloc' - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\blocs\personal_info_bloc.dart:44:11 - undefined_method
warning - Missing type annotation - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\blocs\personal_info_bloc.dart:82:48 - always_specify_types
error - The method 'handleError' isn't defined for the type 'PersonalInfoBloc' - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\blocs\personal_info_bloc.dart:95:11 - undefined_method
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\widgets\profile_photo_widget.dart:44:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\widgets\profile_photo_widget.dart:74:53 - deprecated_member_use
info - The imported package 'firebase_auth' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\data\repositories_impl\shifts_repository_impl.dart:4:8 - depend_on_referenced_packages
info - The imported package 'firebase_data_connect' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\data\repositories_impl\shifts_repository_impl.dart:5:8 - depend_on_referenced_packages
info - The imported package 'bloc' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:1:8 - depend_on_referenced_packages
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:2:8 - uri_does_not_exist
error - Classes can only mix in mixins and classes - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:11:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'ShiftDetailsBloc' - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:31:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'ShiftDetailsBloc' - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:51:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'ShiftDetailsBloc' - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:71:11 - undefined_method
info - The imported package 'bloc' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:1:8 - depend_on_referenced_packages
error - Target of URI doesn't exist: 'package:krow_core/krow_core.dart' - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:3:8 - uri_does_not_exist
info - The imported package 'meta' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:5:8 - depend_on_referenced_packages
error - Classes can only mix in mixins and classes - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:19:10 - mixin_of_non_class
error - The method 'handleError' isn't defined for the type 'ShiftsBloc' - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:49:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'ShiftsBloc' - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:85:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'ShiftsBloc' - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:114:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'ShiftsBloc' - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:162:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'ShiftsBloc' - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:202:11 - undefined_method
error - The method 'handleError' isn't defined for the type 'ShiftsBloc' - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:248:13 - undefined_method
info - Don't invoke 'print' in production code - packages\features\staff\shifts\lib\src\presentation\pages\shifts_page.dart:32:5 - avoid_print
info - Don't invoke 'print' in production code - packages\features\staff\shifts\lib\src\presentation\pages\shifts_page.dart:40:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\staff\shifts\lib\src\presentation\pages\shifts_page.dart:44:7 - avoid_print
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:128:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:183:57 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:208:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:209:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:216:53 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:74:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:100:46 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:101:46 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:108:51 - deprecated_member_use
info - The imported package 'lucide_icons' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\widgets\tabs\my_shifts_tab.dart:4:8 - depend_on_referenced_packages
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\tabs\my_shifts_tab.dart:316:54 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\tabs\my_shifts_tab.dart:507:47 - deprecated_member_use
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\staff\staff_main\lib\src\presentation\blocs\staff_main_cubit.dart:2:8 - depend_on_referenced_packages
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\staff\staff_main\lib\src\staff_main_module.dart:3:8 - depend_on_referenced_packages

View File

@@ -0,0 +1,735 @@
Resolving dependencies...
Downloading packages...
_fe_analyzer_shared 91.0.0 (94.0.0 available)
analyzer 8.4.1 (10.0.2 available)
archive 3.6.1 (4.0.7 available)
bloc 8.1.4 (9.2.0 available)
bloc_test 9.1.7 (10.0.0 available)
build_runner 2.10.5 (2.11.0 available)
characters 1.4.0 (1.4.1 available)
code_assets 0.19.10 (1.0.0 available)
dart_style 3.1.3 (3.1.5 available)
fl_chart 0.66.2 (1.1.1 available)
flutter_bloc 8.1.6 (9.1.1 available)
geolocator 10.1.1 (14.0.2 available)
geolocator_android 4.6.2 (5.0.2 available)
geolocator_web 2.2.1 (4.1.3 available)
get_it 7.7.0 (9.2.0 available)
google_fonts 7.0.2 (8.0.1 available)
googleapis_auth 1.6.0 (2.0.0 available)
grpc 3.2.4 (5.1.0 available)
hooks 0.20.5 (1.0.1 available)
image 4.3.0 (4.7.2 available)
json_annotation 4.9.0 (4.10.0 available)
lints 6.0.0 (6.1.0 available)
matcher 0.12.17 (0.12.18 available)
material_color_utilities 0.11.1 (0.13.0 available)
melos 7.3.0 (7.4.0 available)
meta 1.17.0 (1.18.1 available)
native_toolchain_c 0.17.2 (0.17.4 available)
objective_c 9.2.2 (9.3.0 available)
permission_handler 11.4.0 (12.0.1 available)
permission_handler_android 12.1.0 (13.0.1 available)
protobuf 3.1.0 (6.0.0 available)
shared_preferences_android 2.4.18 (2.4.20 available)
slang 4.12.0 (4.12.1 available)
slang_build_runner 4.12.0 (4.12.1 available)
slang_flutter 4.12.0 (4.12.1 available)
source_span 1.10.1 (1.10.2 available)
test 1.26.3 (1.29.0 available)
test_api 0.7.7 (0.7.9 available)
test_core 0.6.12 (0.6.15 available)
url_launcher_ios 6.3.6 (6.4.0 available)
Got dependencies!
40 packages have newer versions incompatible with dependency constraints.
Try `flutter pub outdated` for more information.
Analyzing mobile...
info - Library names are not necessary - packages\core\lib\core.dart:1:9 - unnecessary_library_name
info - The imported package 'flutter_bloc' isn't a dependency of the importing package - packages\core\lib\src\presentation\mixins\bloc_error_handler.dart:2:8 - depend_on_referenced_packages
info - The imported package 'krow_domain' isn't a dependency of the importing package - packages\core\lib\src\presentation\mixins\bloc_error_handler.dart:3:8 - depend_on_referenced_packages
info - The imported package 'flutter_bloc' isn't a dependency of the importing package - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:2:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:31:3 - sort_constructors_first
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:37:17 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:46:16 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:57:17 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:57:32 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:68:16 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:98:16 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:107:21 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:107:32 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:99:47 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:128:51 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:244:55 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:246:64 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:249:49 - deprecated_member_use
info - Dangling library doc comment - packages\core\lib\src\routing\routing.dart:1:1 - dangling_library_doc_comments
info - The imported package 'krow_domain' isn't a dependency of the importing package - packages\core\lib\src\routing\staff\navigator.dart:2:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\bloc\locale_event.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\data\datasources\locale_local_data_source.dart:18:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\get_default_locale_use_case.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\get_locale_use_case.dart:13:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\get_supported_locales_use_case.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\set_locale_use_case.dart:13:3 - sort_constructors_first
info - The imported package 'firebase_core' isn't a dependency of the importing package - packages\data_connect\lib\src\mixins\data_error_handler.dart:4:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\client_session_store.dart:11:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\client_session_store.dart:26:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\client_session_store.dart:48:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\staff_session_store.dart:8:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\staff_session_store.dart:30:3 - sort_constructors_first
info - Statements in an if should be enclosed in a block - packages\design_system\lib\src\ui_theme.dart:85:19 - curly_braces_in_flow_control_structures
warning - Missing type annotation - packages\design_system\lib\src\ui_theme.dart:258:27 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_app_bar.dart:39:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:43:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:61:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:61:3 - prefer_const_constructors_in_immutables
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:79:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:79:3 - prefer_const_constructors_in_immutables
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:97:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:97:3 - prefer_const_constructors_in_immutables
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:115:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:115:3 - prefer_const_constructors_in_immutables
info - Type could be non-nullable - packages\design_system\lib\src\widgets\ui_button.dart:135:24 - unnecessary_nullable_for_final_variable_declarations
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_chip.dart:57:9 - sort_constructors_first
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:38:21 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:45:27 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:50:45 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:82:5 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_icon_button.dart:30:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_icon_button.dart:42:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_icon_button.dart:53:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_step_indicator.dart:18:9 - sort_constructors_first
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_step_indicator.dart:38:19 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_success_snackbar.dart:30:21 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\design_system\lib\src\widgets\ui_success_snackbar.dart:31:13 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_text_field.dart:59:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:5:68 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:6:16 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:11:18 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:16:16 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:25:5 - always_specify_types
warning - Unused import: '../../entities/shifts/shift.dart' - packages\domain\lib\src\adapters\clock_in\clock_in_adapter.dart:1:8 - unused_import
warning - Missing type annotation - packages\domain\lib\src\adapters\profile\bank_account_adapter.dart:34:10 - always_specify_types
info - Angle brackets will be interpreted as HTML - packages\domain\lib\src\adapters\profile\experience_adapter.dart:3:62 - unintended_html_in_doc_comment
warning - Unnecessary cast - packages\domain\lib\src\adapters\profile\tax_form_adapter.dart:21:53 - unnecessary_cast
warning - Missing type annotation - packages\domain\lib\src\adapters\profile\tax_form_adapter.dart:21:65 - always_specify_types
info - The imported package 'intl' isn't a dependency of the importing package - packages\domain\lib\src\adapters\shifts\shift_adapter.dart:1:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\availability\availability_slot.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\availability\availability_slot.dart:32:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\availability\day_availability.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\availability\day_availability.dart:14:18 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\entities\availability\day_availability.dart:30:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\clock_in\attendance_status.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\clock_in\attendance_status.dart:20:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\financial\payment_summary.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\financial\payment_summary.dart:18:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\financial\time_card.dart:50:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\financial\time_card.dart:65:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\attire_item.dart:23:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\experience_skill.dart:21:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\experience_skill.dart:25:49 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\industry.dart:12:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\industry.dart:16:42 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\staff_document.dart:38:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\staff_document.dart:50:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\tax_form.dart:19:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\tax_form.dart:26:21 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\entities\profile\tax_form.dart:32:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\shifts\shift.dart:33:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\shifts\shift.dart:65:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\shifts\shift.dart:102:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\shifts\shift.dart:105:30 - always_specify_types
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:35:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:44:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:53:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:62:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:71:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:80:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:89:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:98:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:107:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:116:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:134:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:143:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:152:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:170:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:179:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:188:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:197:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:206:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:224:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:233:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:242:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:260:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:269:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:278:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:291:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:300:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:309:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:318:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:327:9 - use_super_parameters
warning - The name GoogleOnlyAccountException is shown, but isn't used - packages\features\client\authentication\lib\src\data\repositories_impl\auth_repository_impl.dart:16:9 - unused_shown_name
warning - The value of the local variable 'newUserData' isn't used - packages\features\client\authentication\lib\src\data\repositories_impl\auth_repository_impl.dart:266:35 - unused_local_variable
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:137:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:152:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:200:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:210:47 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:241:35 - deprecated_member_use
warning - Missing type annotation - packages\features\client\authentication\lib\src\presentation\pages\client_sign_up_page.dart:44:12 - always_specify_types
warning - The value of the local variable 'currentBill' isn't used - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:57:22 - unused_local_variable
error - Expected a method, getter, setter or operator declaration - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:172:1 - expected_executable
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:76:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:108:61 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:156:64 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:171:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:189:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_calendar_selector.dart:110:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_calendar_selector.dart:135:58 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_calendar_selector.dart:173:45 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:76:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:112:60 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:130:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:142:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:159:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:320:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:322:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:331:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:333:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:341:31 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:343:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:352:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:354:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:362:29 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:364:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:372:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:374:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:382:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:384:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:394:29 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:396:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\late_workers_alert.dart:22:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\late_workers_alert.dart:25:39 - deprecated_member_use
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\client\client_main\lib\src\client_main_module.dart:6:8 - depend_on_referenced_packages
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\client\client_main\lib\src\presentation\blocs\client_main_cubit.dart:3:8 - depend_on_referenced_packages
warning - Missing type annotation - packages\features\client\create_order\lib\src\data\repositories_impl\client_create_order_repository_impl.dart:30:12 - always_specify_types
info - Don't invoke 'print' in production code - packages\features\client\create_order\lib\src\data\repositories_impl\client_create_order_repository_impl.dart:131:7 - avoid_print
warning - The member 'emit' can only be used within 'package:bloc/src/bloc.dart' or a test - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:71:23 - invalid_use_of_visible_for_testing_member
warning - The member 'emit' can only be used within 'package:bloc/src/bloc.dart' or a test - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:75:7 - invalid_use_of_visible_for_testing_member
info - Don't invoke 'print' in production code - packages\features\client\create_order\lib\src\presentation\widgets\rapid_order\rapid_order_view.dart:292:21 - avoid_print
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:25:10 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:42:17 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:42:29 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:45:17 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:45:29 - always_specify_types
warning - The name HubCreationFailedException is shown, but isn't used - packages\features\client\hubs\lib\src\data\repositories_impl\hub_repository_impl.dart:12:9 - unused_shown_name
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\domain\usecases\sign_out_usecase.dart:13:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\presentation\blocs\client_settings_bloc.dart:14:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\presentation\blocs\client_settings_state.dart:25:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\client\settings\lib\src\presentation\widgets\client_settings_page\settings_profile_header.dart:80:23 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\presentation\widgets\client_settings_page\settings_quick_links.dart:69:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:15:3 - sort_constructors_first
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:43:5 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:66:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:118:5 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:124:7 - avoid_print
info - Constructor declarations should be before non-constructor declarations - packages\features\client\view_orders\lib\src\domain\usecases\get_orders_use_case.dart:15:3 - sort_constructors_first
error - The argument type 'Null Function(ViewOrdersState)' can't be assigned to the parameter type 'Emitter<ViewOrdersState>'. - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:42:13 - argument_type_not_assignable
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:248:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:257:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:266:7 - avoid_print
warning - The declaration '_applyApplications' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:323:19 - unused_element
warning - The declaration '_isSameDay' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:357:8 - unused_element
warning - The declaration '_calculateCalendarDays' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:361:18 - unused_element
warning - The declaration '_calculateFilteredOrders' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:376:19 - unused_element
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:402:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:410:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:418:7 - avoid_print
warning - The declaration '_calculateCategoryCount' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:426:7 - unused_element
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:427:9 - undefined_identifier
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:431:14 - undefined_identifier
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:434:14 - undefined_identifier
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:438:14 - undefined_identifier
warning - The declaration '_calculateUpNextCount' isn't referenced - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:445:7 - unused_element
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:446:9 - undefined_identifier
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:450:14 - undefined_identifier
error - Undefined name 'state' - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:452:12 - undefined_identifier
error - Expected a method, getter, setter or operator declaration - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:461:1 - expected_executable
warning - The declaration '_formatDate' isn't referenced - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:84:10 - unused_element
warning - The receiver can't be null, so the null-aware operator '?.' is unnecessary - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:833:55 - invalid_null_aware_operator
info - Type could be non-nullable - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:872:7 - unnecessary_nullable_for_final_variable_declarations
info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:1615:39 - use_build_context_synchronously
info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:1635:39 - use_build_context_synchronously
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\data\repositories_impl\place_repository_impl.dart:9:3 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\data\repositories_impl\place_repository_impl.dart:13:31 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\data\repositories_impl\place_repository_impl.dart:40:21 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\data\repositories_impl\profile_setup_repository_impl.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\arguments\sign_in_with_phone_arguments.dart:13:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\arguments\verify_otp_arguments.dart:21:9 - sort_constructors_first
warning - Unused import: 'package:krow_domain/krow_domain.dart' - packages\features\staff\authentication\lib\src\domain\repositories\profile_setup_repository.dart:1:8 - unused_import
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\search_cities_usecase.dart:6:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\sign_in_with_phone_usecase.dart:15:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\submit_profile_setup_usecase.dart:6:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\verify_otp_usecase.dart:15:3 - sort_constructors_first
info - The imported package 'bloc' isn't a dependency of the importing package - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:3:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:29:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:19:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:39:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:57:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:67:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:78:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:89:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_state.dart:49:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:117:48 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:124:7 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:128:48 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:136:46 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:17:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:29:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:41:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:53:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:65:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:77:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:89:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_state.dart:36:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\pages\phone_verification_page.dart:23:9 - sort_constructors_first
info - 'WillPopScope' is deprecated and shouldn't be used. Use PopScope instead. The Android predictive back feature will not work with WillPopScope. This feature was deprecated after v3.12.0-1.0.pre - packages\features\staff\authentication\lib\src\presentation\pages\phone_verification_page.dart:138:24 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\authentication\lib\src\presentation\pages\profile_setup_page.dart:157:27 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\common\section_title_subtitle.dart:12:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_actions.dart:9:9 - sort_constructors_first
info - Unnecessary instance of 'Container' - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:9:12 - avoid_unnecessary_containers
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:11:19 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:25:50 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:32:36 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:32:45 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:32:52 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:43:23 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:57:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:66:43 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification.dart:24:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:20:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:31:52 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:35:39 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:75:21 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_resend_section.dart:14:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_resend_section.dart:35:5 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_verification_actions.dart:18:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_verification_actions.dart:38:17 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_verification_header.dart:11:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\phone_input\phone_input_actions.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\phone_input\phone_input_form_field.dart:20:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_basic_info.dart:21:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_experience.dart:22:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_header.dart:17:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:24:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:92:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:92:33 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:94:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:94:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:104:28 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:106:41 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:116:36 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:116:45 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:117:31 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:117:40 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:118:19 - always_specify_types
info - Library names are not necessary - packages\features\staff\authentication\lib\staff_authentication.dart:1:9 - unnecessary_library_name
info - Statements in an if should be enclosed in a block - packages\features\staff\availability\lib\src\data\repositories_impl\availability_repository_impl.dart:148:28 - curly_braces_in_flow_control_structures
info - Statements in an if should be enclosed in a block - packages\features\staff\availability\lib\src\data\repositories_impl\availability_repository_impl.dart:149:35 - curly_braces_in_flow_control_structures
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:100:45 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:122:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:192:30 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:193:38 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:224:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:310:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:341:42 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:383:33 - deprecated_member_use
info - 'activeColor' is deprecated and shouldn't be used. Use activeThumbColor instead. This feature was deprecated after v3.31.0-2.0.pre - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:418:17 - deprecated_member_use
info - Unnecessary use of 'toList' in a spread - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:431:14 - unnecessary_to_list_in_spreads
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:484:36 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:485:40 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:587:35 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\availability\lib\staff_availability.dart:1:9 - unnecessary_library_name
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\data\repositories_impl\clock_in_repository_impl.dart:109:78 - always_specify_types
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:105:11 - unawaited_futures
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\clock_in\lib\src\presentation\blocs\clock_in_cubit.dart:89:7 - unawaited_futures
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\blocs\clock_in_cubit.dart:130:11 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\blocs\clock_in_cubit.dart:147:11 - always_specify_types
warning - The value of the local variable 'checkInStr' isn't used - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:68:24 - unused_local_variable
warning - The value of the local variable 'checkOutStr' isn't used - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:71:24 - unused_local_variable
warning - The declaration '_buildModeTab' isn't referenced - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:465:10 - unused_element
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:483:43 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:523:43 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:573:33 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:34:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:100:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:106:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:112:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:118:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:175:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:273:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:375:23 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:386:53 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:427:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:430:51 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:461:51 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:464:53 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:512:56 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:541:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\date_selector.dart:19:34 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\date_selector.dart:44:60 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\date_selector.dart:70:44 - deprecated_member_use
info - Unnecessary use of multiple underscores - packages\features\staff\clock_in\lib\src\presentation\widgets\location_map_placeholder.dart:30:24 - unnecessary_underscores
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\location_map_placeholder.dart:59:41 - deprecated_member_use
warning - The value of the field '_tookLunch' isn't used - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:15:9 - unused_field
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:187:60 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:200:60 - always_specify_types
info - 'groupValue' is deprecated and shouldn't be used. Use a RadioGroup ancestor to manage group value instead. This feature was deprecated after v3.32.0-0.0.pre - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:242:16 - deprecated_member_use
info - 'onChanged' is deprecated and shouldn't be used. Use RadioGroup to handle value change instead. This feature was deprecated after v3.32.0-0.0.pre - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:243:16 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:59:7 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:84:11 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:99:34 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:152:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:168:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:200:47 - deprecated_member_use
error - The argument type 'void Function(HomeState)' can't be assigned to the parameter type 'Emitter<HomeState>'. - packages\features\staff\home\lib\src\presentation\blocs\home_cubit.dart:25:13 - argument_type_not_assignable
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\home_header.dart:36:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\home_header.dart:41:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\pending_payment_card.dart:24:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\pending_payment_card.dart:24:75 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\pending_payment_card.dart:29:54 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\placeholder_banner.dart:32:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\quick_action_item.dart:34:46 - deprecated_member_use
warning - Dead code - packages\features\staff\home\lib\src\presentation\widgets\home_page\recommended_shift_card.dart:193:45 - dead_code
warning - The left operand can't be null, so the right operand is never executed - packages\features\staff\home\lib\src\presentation\widgets\home_page\recommended_shift_card.dart:193:48 - dead_null_aware_expression
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\section_header.dart:52:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\section_header.dart:55:45 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:32:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:42:34 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:61:42 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:62:37 - deprecated_member_use
info - 'background' is deprecated and shouldn't be used. Use surface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\benefits_widget.dart:20:46 - deprecated_member_use
info - 'onBackground' is deprecated and shouldn't be used. Use onSurface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\benefits_widget.dart:25:50 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\benefits_widget.dart:25:63 - deprecated_member_use
info - 'background' is deprecated and shouldn't be used. Use surface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:56:48 - deprecated_member_use
info - 'onBackground' is deprecated and shouldn't be used. Use onSurface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:61:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:61:65 - deprecated_member_use
info - 'surfaceVariant' is deprecated and shouldn't be used. Use surfaceContainerHighest instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:78:56 - deprecated_member_use
info - 'background' is deprecated and shouldn't be used. Use surface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:55:48 - deprecated_member_use
info - 'onBackground' is deprecated and shouldn't be used. Use onSurface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:60:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:60:65 - deprecated_member_use
info - 'surfaceVariant' is deprecated and shouldn't be used. Use surfaceContainerHighest instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:77:56 - deprecated_member_use
info - Import of a library in the 'lib/src' directory of another package - packages\features\staff\payments\lib\src\payments_module.dart:1:8 - implementation_imports
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\pages\payments_page.dart:114:41 - deprecated_member_use
warning - The value of the local variable 'maxX' isn't used - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:36:18 - unused_local_variable
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:47:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:105:54 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:124:12 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\payment_history_item.dart:37:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\payment_stats_card.dart:26:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\pending_pay_card.dart:27:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\data\repositories\profile_repository_impl.dart:34:5 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\data\repositories\profile_repository_impl.dart:39:5 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\domain\usecases\get_profile_usecase.dart:18:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\domain\usecases\sign_out_usecase.dart:19:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:16:3 - sort_constructors_first
error - The argument type 'void Function(ProfileState)' can't be assigned to the parameter type 'Emitter<ProfileState>'. - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:28:13 - argument_type_not_assignable
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:30:9 - always_specify_types
error - The argument type 'void Function(ProfileState)' can't be assigned to the parameter type 'Emitter<ProfileState>'. - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:51:13 - argument_type_not_assignable
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\blocs\profile_state.dart:36:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\blocs\profile_state.dart:56:30 - always_specify_types
warning - Duplicate import - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:17:8 - duplicate_import
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:64:20 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:64:29 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:69:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:69:28 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:86:11 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:94:25 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:108:33 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:125:37 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:146:37 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:150:41 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:164:37 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:188:37 - always_specify_types
error - The getter 'globe' isn't defined for the type 'UiIcons' - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:190:45 - undefined_getter
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:195:45 - always_specify_types
warning - Unused import: 'package:flutter_bloc/flutter_bloc.dart' - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:4:8 - unused_import
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:18:16 - prefer_const_constructors
error - The getter 'surface' isn't defined for the type 'UiColors' - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:20:25 - undefined_getter
error - The argument type 'BorderRadius' can't be assigned to the parameter type 'double'. - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:21:66 - argument_type_not_assignable
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:26:19 - always_specify_types
error - The getter 'headline4b' isn't defined for the type 'UiTypography' - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:29:33 - undefined_getter
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:32:11 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:38:11 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:44:11 - prefer_const_constructors
error - The argument type 'BorderRadius' can't be assigned to the parameter type 'double'. - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:72:43 - argument_type_not_assignable
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:74:18 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:79:48 - deprecated_member_use
error - The argument type 'BorderRadius' can't be assigned to the parameter type 'double'. - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:80:47 - argument_type_not_assignable
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:88:21 - always_specify_types
error - The getter 'iconSizeMd' isn't defined for the type 'UiConstants' - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:99:35 - undefined_getter
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:12:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:16:5 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:31:22 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:34:25 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:36:17 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:23:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:33:5 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:37:16 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:43:19 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:45:23 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:46:19 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:52:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:56:25 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:68:57 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:74:13 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:78:25 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:82:28 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:88:31 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:90:41 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:94:32 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:96:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:106:59 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:124:43 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:126:53 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:149:32 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:151:52 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:164:13 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:171:13 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:173:24 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:178:40 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:22:17 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:22:26 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:23:9 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:24:9 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:25:9 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:32:35 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:13:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:31:18 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:35:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:40:29 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:45:49 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:51:21 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:53:32 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:79:46 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:18:5 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:19:5 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:22:16 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:24:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:29:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:32:23 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:47:11 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:58:22 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:15:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:27:16 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:32:20 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:34:40 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:42:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:86:19 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:91:39 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:97:11 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\section_title.dart:10:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\section_title.dart:16:16 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\section_title.dart:17:15 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\data\repositories_impl\certificates_repository_impl.dart:23:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\domain\usecases\get_certificates_usecase.dart:15:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_cubit.dart:11:3 - sort_constructors_first
error - The argument type 'void Function(CertificatesState)' can't be assigned to the parameter type 'Emitter<CertificatesState>'. - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_cubit.dart:19:13 - argument_type_not_assignable
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_state.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_state.dart:30:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_state.dart:34:15 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\add_certificate_card.dart:8:9 - sort_constructors_first
info - The imported package 'intl' isn't a dependency of the importing package - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:3:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:14:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:48:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:62:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:99:46 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:416:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_upload_modal.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:10:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:42:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:73:55 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:103:45 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\compliance\certificates\lib\staff_certificates.dart:1:9 - unnecessary_library_name
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\data\repositories_impl\documents_repository_impl.dart:14:3 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\documents\lib\src\data\repositories_impl\documents_repository_impl.dart:29:12 - always_specify_types
warning - Dead code - packages\features\staff\profile_sections\compliance\documents\lib\src\data\repositories_impl\documents_repository_impl.dart:52:5 - dead_code
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\domain\usecases\get_documents_usecase.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\blocs\documents\documents_cubit.dart:11:3 - sort_constructors_first
error - The argument type 'void Function(DocumentsState)' can't be assigned to the parameter type 'Emitter<DocumentsState>'. - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\blocs\documents\documents_cubit.dart:16:13 - argument_type_not_assignable
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\blocs\documents\documents_state.dart:11:9 - sort_constructors_first
warning - Unused import: 'package:krow_core/core.dart' - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\pages\documents_page.dart:11:8 - unused_import
info - Constructors for public widgets should have a named 'key' parameter - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\pages\documents_page.dart:15:7 - use_key_in_widget_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:12:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:35:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:117:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:122:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:127:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:132:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:137:33 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\documents_progress_card.dart:17:9 - sort_constructors_first
info - Library names are not necessary - packages\features\staff\profile_sections\compliance\documents\lib\staff_documents.dart:1:9 - unnecessary_library_name
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\mappers\tax_form_mapper.dart:9:43 - always_specify_types
info - The type of the right operand ('TaxFormType') isn't a subtype or a supertype of the left operand ('EnumValue<TaxFormType>') - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\mappers\tax_form_mapper.dart:47:23 - unrelated_type_equality_checks
info - Statements in an if should be enclosed in a block - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\repositories\tax_forms_repository_impl.dart:194:41 - curly_braces_in_flow_control_structures
info - Statements in an if should be enclosed in a block - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\repositories\tax_forms_repository_impl.dart:195:47 - curly_braces_in_flow_control_structures
info - Statements in an if should be enclosed in a block - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\repositories\tax_forms_repository_impl.dart:196:44 - curly_braces_in_flow_control_structures
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\get_tax_forms_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\save_i9_form_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\save_w4_form_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\submit_i9_form_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\submit_w4_form_usecase.dart:7:3 - sort_constructors_first
info - The imported package 'uuid' isn't a dependency of the importing package - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:4:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:13:3 - sort_constructors_first
error - The argument type 'void Function(FormI9State)' can't be assigned to the parameter type 'Emitter<FormI9State>'. - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:100:13 - argument_type_not_assignable
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:102:47 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_state.dart:38:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_state.dart:117:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\tax_forms\tax_forms_cubit.dart:11:3 - sort_constructors_first
error - The argument type 'void Function(TaxFormsState)' can't be assigned to the parameter type 'Emitter<TaxFormsState>'. - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\tax_forms\tax_forms_cubit.dart:16:13 - argument_type_not_assignable
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\tax_forms\tax_forms_state.dart:11:9 - sort_constructors_first
info - The imported package 'uuid' isn't a dependency of the importing package - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:4:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:13:3 - sort_constructors_first
error - The argument type 'void Function(FormW4State)' can't be assigned to the parameter type 'Emitter<FormW4State>'. - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:93:13 - argument_type_not_assignable
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:95:47 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_state.dart:32:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_state.dart:92:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:12:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:212:81 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:232:50 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:249:77 - deprecated_member_use
info - 'value' is deprecated and shouldn't be used. Use initialValue instead. This will set the initial value for the form field. This feature was deprecated after v3.33.0-1.0.pre - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:465:21 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:12:9 - sort_constructors_first
warning - The value of the field '_usStates' isn't used - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:27:22 - unused_field
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:258:81 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:278:50 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:295:77 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:446:18 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:40:47 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:148:11 - always_specify_types
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:150:53 - unawaited_futures
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:153:11 - always_specify_types
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:155:53 - unawaited_futures
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:174:41 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\compliance\tax_forms\lib\staff_tax_forms.dart:1:9 - unnecessary_library_name
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\arguments\add_bank_account_params.dart:9:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\arguments\add_bank_account_params.dart:12:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\usecases\add_bank_account_usecase.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\usecases\get_bank_accounts_usecase.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_cubit.dart:14:3 - sort_constructors_first
error - The argument type 'void Function(BankAccountState)' can't be assigned to the parameter type 'Emitter<BankAccountState>'. - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_cubit.dart:24:13 - argument_type_not_assignable
error - The argument type 'void Function(BankAccountState)' can't be assigned to the parameter type 'Emitter<BankAccountState>'. - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_cubit.dart:74:13 - argument_type_not_assignable
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_state.dart:12:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_state.dart:14:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_state.dart:34:30 - always_specify_types
warning - Unused import: 'package:krow_core/core.dart' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:11:8 - unused_import
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:146:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:202:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:242:37 - deprecated_member_use
warning - Unused import: 'package:flutter_modular/flutter_modular.dart' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:2:8 - unused_import
warning - Unused import: '../blocs/bank_account_cubit.dart' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:4:8 - unused_import
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:11:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:125:34 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\finances\staff_bank_account\lib\staff_bank_account.dart:1:9 - unnecessary_library_name
info - The imported package 'firebase_auth' isn't a dependency of the importing package - packages\features\staff\profile_sections\finances\time_card\lib\src\data\repositories_impl\time_card_repository_impl.dart:1:8 - depend_on_referenced_packages
info - The imported package 'firebase_data_connect' isn't a dependency of the importing package - packages\features\staff\profile_sections\finances\time_card\lib\src\data\repositories_impl\time_card_repository_impl.dart:2:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\data\repositories_impl\time_card_repository_impl.dart:17:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\domain\arguments\get_time_cards_arguments.dart:8:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\domain\arguments\get_time_cards_arguments.dart:11:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\domain\usecases\get_time_cards_usecase.dart:10:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_bloc.dart:16:3 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:6:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:14:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:19:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:22:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:6:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:17:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:25:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:29:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:31:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:30:12 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:53:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:53:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:65:29 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\month_selector.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\month_selector.dart:29:19 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:17:17 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:30:27 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:42:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:19:17 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:45:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:62:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:64:23 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:15:5 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:22:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:27:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:32:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:37:41 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:43:5 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:54:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:58:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:61:27 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:98:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:116:25 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:139:7 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:141:9 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:155:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:161:17 - always_specify_types
info - Library names are not necessary - packages\features\staff\profile_sections\finances\time_card\lib\src\staff_time_card_module.dart:1:9 - unnecessary_library_name
info - The imported package 'firebase_auth' isn't a dependency of the importing package - packages\features\staff\profile_sections\finances\time_card\lib\src\staff_time_card_module.dart:3:8 - depend_on_referenced_packages
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\staff_time_card_module.dart:45:15 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\data\repositories_impl\attire_repository_impl.dart:15:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\arguments\save_attire_arguments.dart:12:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\arguments\upload_attire_photo_arguments.dart:12:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\usecases\get_attire_options_usecase.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\usecases\save_attire_usecase.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\usecases\upload_attire_photo_usecase.dart:10:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:18:3 - sort_constructors_first
error - The argument type 'void Function(AttireState)' can't be assigned to the parameter type 'Emitter<AttireState>'. - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:29:13 - argument_type_not_assignable
error - The argument type 'void Function(AttireState)' can't be assigned to the parameter type 'Emitter<AttireState>'. - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:90:13 - argument_type_not_assignable
error - The argument type 'void Function(AttireState)' can't be assigned to the parameter type 'Emitter<AttireState>'. - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:142:13 - argument_type_not_assignable
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_state.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attestation_checkbox.dart:9:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_bottom_bar.dart:12:9 - sort_constructors_first
info - The imported package 'lucide_icons' isn't a dependency of the importing package - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:3:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:15:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:56:46 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:156:46 - deprecated_member_use
info - The imported package 'lucide_icons' isn't a dependency of the importing package - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_info_card.dart:3:8 - depend_on_referenced_packages
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_info_card.dart:14:33 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\onboarding\attire\lib\staff_attire.dart:1:9 - unnecessary_library_name
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\emergency_contact\lib\src\presentation\widgets\emergency_contact_info_banner.dart:12:32 - deprecated_member_use
info - Constructors in '@immutable' classes should be declared as 'const' - packages\features\staff\profile_sections\onboarding\experience\lib\src\domain\arguments\save_experience_arguments.dart:7:3 - prefer_const_constructors_in_immutables
warning - The declaration '_buildCustomSkillsList' isn't referenced - packages\features\staff\profile_sections\onboarding\experience\lib\src\presentation\pages\experience_page.dart:140:10 - unused_element
info - Library names are not necessary - packages\features\staff\profile_sections\onboarding\experience\lib\staff_profile_experience.dart:1:9 - unnecessary_library_name
warning - Missing type annotation - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\blocs\personal_info_bloc.dart:82:48 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\widgets\profile_photo_widget.dart:44:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\widgets\profile_photo_widget.dart:74:53 - deprecated_member_use
info - The imported package 'firebase_auth' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\data\repositories_impl\shifts_repository_impl.dart:4:8 - depend_on_referenced_packages
info - The imported package 'firebase_data_connect' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\data\repositories_impl\shifts_repository_impl.dart:5:8 - depend_on_referenced_packages
info - The imported package 'bloc' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:1:8 - depend_on_referenced_packages
info - The imported package 'bloc' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:1:8 - depend_on_referenced_packages
info - The imported package 'meta' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:5:8 - depend_on_referenced_packages
info - Don't invoke 'print' in production code - packages\features\staff\shifts\lib\src\presentation\pages\shifts_page.dart:32:5 - avoid_print
info - Don't invoke 'print' in production code - packages\features\staff\shifts\lib\src\presentation\pages\shifts_page.dart:40:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\staff\shifts\lib\src\presentation\pages\shifts_page.dart:44:7 - avoid_print
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:128:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:183:57 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:208:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:209:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:216:53 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:74:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:100:46 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:101:46 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:108:51 - deprecated_member_use
info - The imported package 'lucide_icons' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\widgets\tabs\my_shifts_tab.dart:4:8 - depend_on_referenced_packages
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\tabs\my_shifts_tab.dart:316:54 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\tabs\my_shifts_tab.dart:507:47 - deprecated_member_use
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\staff\staff_main\lib\src\presentation\blocs\staff_main_cubit.dart:2:8 - depend_on_referenced_packages
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\staff\staff_main\lib\src\staff_main_module.dart:3:8 - depend_on_referenced_packages

View File

@@ -0,0 +1,695 @@
Analyzing mobile...
info - Library names are not necessary - packages\core\lib\core.dart:1:9 - unnecessary_library_name
info - The imported package 'flutter_bloc' isn't a dependency of the importing package - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:2:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:31:3 - sort_constructors_first
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:37:17 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:46:16 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:57:17 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:57:32 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:68:16 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:98:16 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:107:21 - always_specify_types
warning - Missing type annotation - packages\core\lib\src\presentation\observers\core_bloc_observer.dart:107:32 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:99:47 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:128:51 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:244:55 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:246:64 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\core\lib\src\presentation\widgets\web_mobile_frame.dart:249:49 - deprecated_member_use
info - Dangling library doc comment - packages\core\lib\src\routing\routing.dart:1:1 - dangling_library_doc_comments
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\bloc\locale_event.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\data\datasources\locale_local_data_source.dart:18:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\get_default_locale_use_case.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\get_locale_use_case.dart:13:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\get_supported_locales_use_case.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\core_localization\lib\src\domain\usecases\set_locale_use_case.dart:13:3 - sort_constructors_first
info - The imported package 'firebase_core' isn't a dependency of the importing package - packages\data_connect\lib\src\mixins\data_error_handler.dart:4:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\client_session_store.dart:11:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\client_session_store.dart:26:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\client_session_store.dart:48:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\staff_session_store.dart:8:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\data_connect\lib\src\session\staff_session_store.dart:30:3 - sort_constructors_first
info - Statements in an if should be enclosed in a block - packages\design_system\lib\src\ui_theme.dart:85:19 - curly_braces_in_flow_control_structures
warning - Missing type annotation - packages\design_system\lib\src\ui_theme.dart:258:27 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_app_bar.dart:39:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:43:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:61:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:61:3 - prefer_const_constructors_in_immutables
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:79:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:79:3 - prefer_const_constructors_in_immutables
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:97:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:97:3 - prefer_const_constructors_in_immutables
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_button.dart:115:3 - sort_constructors_first
info - Constructors in '@immutable' classes should be declared as 'const' - packages\design_system\lib\src\widgets\ui_button.dart:115:3 - prefer_const_constructors_in_immutables
info - Type could be non-nullable - packages\design_system\lib\src\widgets\ui_button.dart:135:24 - unnecessary_nullable_for_final_variable_declarations
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_chip.dart:57:9 - sort_constructors_first
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:38:21 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:45:27 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:50:45 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_error_snackbar.dart:82:5 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_icon_button.dart:30:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_icon_button.dart:42:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_icon_button.dart:53:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_step_indicator.dart:18:9 - sort_constructors_first
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_step_indicator.dart:38:19 - always_specify_types
warning - Missing type annotation - packages\design_system\lib\src\widgets\ui_success_snackbar.dart:30:21 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\design_system\lib\src\widgets\ui_success_snackbar.dart:31:13 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\design_system\lib\src\widgets\ui_text_field.dart:59:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:5:68 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:6:16 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:11:18 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:16:16 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\adapters\availability\availability_adapter.dart:25:5 - always_specify_types
warning - Unused import: '../../entities/shifts/shift.dart' - packages\domain\lib\src\adapters\clock_in\clock_in_adapter.dart:1:8 - unused_import
warning - Missing type annotation - packages\domain\lib\src\adapters\profile\bank_account_adapter.dart:34:10 - always_specify_types
info - Angle brackets will be interpreted as HTML - packages\domain\lib\src\adapters\profile\experience_adapter.dart:3:62 - unintended_html_in_doc_comment
warning - Unnecessary cast - packages\domain\lib\src\adapters\profile\tax_form_adapter.dart:21:53 - unnecessary_cast
warning - Missing type annotation - packages\domain\lib\src\adapters\profile\tax_form_adapter.dart:21:65 - always_specify_types
info - The imported package 'intl' isn't a dependency of the importing package - packages\domain\lib\src\adapters\shifts\shift_adapter.dart:1:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\availability\availability_slot.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\availability\availability_slot.dart:32:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\availability\day_availability.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\availability\day_availability.dart:14:18 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\entities\availability\day_availability.dart:30:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\clock_in\attendance_status.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\clock_in\attendance_status.dart:20:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\financial\payment_summary.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\financial\payment_summary.dart:18:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\financial\time_card.dart:50:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\financial\time_card.dart:65:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\attire_item.dart:23:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\experience_skill.dart:21:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\experience_skill.dart:25:49 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\industry.dart:12:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\industry.dart:16:42 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\staff_document.dart:38:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\staff_document.dart:50:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\profile\tax_form.dart:19:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\profile\tax_form.dart:26:21 - always_specify_types
warning - Missing type annotation - packages\domain\lib\src\entities\profile\tax_form.dart:32:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\shifts\shift.dart:33:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\shifts\shift.dart:65:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\domain\lib\src\entities\shifts\shift.dart:102:9 - sort_constructors_first
warning - Missing type annotation - packages\domain\lib\src\entities\shifts\shift.dart:105:30 - always_specify_types
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:35:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:44:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:53:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:62:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:71:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:80:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:89:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:98:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:107:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:116:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:134:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:143:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:152:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:170:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:179:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:188:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:197:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:206:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:224:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:233:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:242:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:260:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:269:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:278:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:291:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:300:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:309:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:318:9 - use_super_parameters
info - Parameter 'technicalMessage' could be a super parameter - packages\domain\lib\src\exceptions\app_exception.dart:327:9 - use_super_parameters
warning - The name GoogleOnlyAccountException is shown, but isn't used - packages\features\client\authentication\lib\src\data\repositories_impl\auth_repository_impl.dart:16:9 - unused_shown_name
warning - The value of the local variable 'newUserData' isn't used - packages\features\client\authentication\lib\src\data\repositories_impl\auth_repository_impl.dart:266:35 - unused_local_variable
info - Implicit tear-off of the 'call' method - packages\features\client\authentication\lib\src\presentation\blocs\client_auth_bloc.dart:58:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\client\authentication\lib\src\presentation\blocs\client_auth_bloc.dart:80:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\client\authentication\lib\src\presentation\blocs\client_auth_bloc.dart:106:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\client\authentication\lib\src\presentation\blocs\client_auth_bloc.dart:128:13 - implicit_call_tearoffs
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:137:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:152:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:200:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:210:47 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\authentication\lib\src\presentation\pages\client_get_started_page.dart:241:35 - deprecated_member_use
warning - Missing type annotation - packages\features\client\authentication\lib\src\presentation\pages\client_sign_up_page.dart:44:12 - always_specify_types
info - Implicit tear-off of the 'call' method - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:46:13 - implicit_call_tearoffs
warning - The value of the local variable 'currentBill' isn't used - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:57:22 - unused_local_variable
info - Implicit tear-off of the 'call' method - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:98:13 - implicit_call_tearoffs
error - Expected a method, getter, setter or operator declaration - packages\features\client\billing\lib\src\presentation\blocs\billing_bloc.dart:172:1 - expected_executable
info - Implicit tear-off of the 'call' method - packages\features\client\client_coverage\lib\src\presentation\blocs\coverage_bloc.dart:46:13 - implicit_call_tearoffs
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:76:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:108:61 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:156:64 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:171:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\pages\coverage_page.dart:189:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_calendar_selector.dart:110:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_calendar_selector.dart:135:58 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_calendar_selector.dart:173:45 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:76:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:112:60 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:130:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:142:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_header.dart:159:59 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:320:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:322:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:331:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:333:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:341:31 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:343:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:352:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:354:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:362:29 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:364:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:372:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:374:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:382:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:384:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:394:29 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\coverage_shift_list.dart:396:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\late_workers_alert.dart:22:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\client\client_coverage\lib\src\presentation\widgets\late_workers_alert.dart:25:39 - deprecated_member_use
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\client\client_main\lib\src\client_main_module.dart:6:8 - depend_on_referenced_packages
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\client\client_main\lib\src\presentation\blocs\client_main_cubit.dart:3:8 - depend_on_referenced_packages
warning - Missing type annotation - packages\features\client\create_order\lib\src\data\repositories_impl\client_create_order_repository_impl.dart:30:12 - always_specify_types
info - Don't invoke 'print' in production code - packages\features\client\create_order\lib\src\data\repositories_impl\client_create_order_repository_impl.dart:131:7 - avoid_print
info - Implicit tear-off of the 'call' method - packages\features\client\create_order\lib\src\presentation\blocs\client_create_order_bloc.dart:23:13 - implicit_call_tearoffs
warning - The member 'emit' can only be used within 'package:bloc/src/bloc.dart' or a test - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:71:23 - invalid_use_of_visible_for_testing_member
warning - The member 'emit' can only be used within 'package:bloc/src/bloc.dart' or a test - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:75:7 - invalid_use_of_visible_for_testing_member
info - Implicit tear-off of the 'call' method - packages\features\client\create_order\lib\src\presentation\blocs\one_time_order_bloc.dart:227:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\client\create_order\lib\src\presentation\blocs\rapid_order_bloc.dart:72:15 - implicit_call_tearoffs
info - Don't invoke 'print' in production code - packages\features\client\create_order\lib\src\presentation\widgets\rapid_order\rapid_order_view.dart:292:21 - avoid_print
info - Implicit tear-off of the 'call' method - packages\features\client\home\lib\src\presentation\blocs\client_home_bloc.dart:40:13 - implicit_call_tearoffs
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:25:10 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:42:17 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:42:29 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:45:17 - always_specify_types
warning - Missing type annotation - packages\features\client\home\lib\src\presentation\widgets\coverage_dashboard.dart:45:29 - always_specify_types
warning - The name HubCreationFailedException is shown, but isn't used - packages\features\client\hubs\lib\src\data\repositories_impl\hub_repository_impl.dart:12:9 - unused_shown_name
info - Implicit tear-off of the 'call' method - packages\features\client\hubs\lib\src\presentation\blocs\client_hubs_bloc.dart:71:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\client\hubs\lib\src\presentation\blocs\client_hubs_bloc.dart:90:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\client\hubs\lib\src\presentation\blocs\client_hubs_bloc.dart:130:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\client\hubs\lib\src\presentation\blocs\client_hubs_bloc.dart:156:13 - implicit_call_tearoffs
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\domain\usecases\sign_out_usecase.dart:13:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\presentation\blocs\client_settings_bloc.dart:14:3 - sort_constructors_first
info - Implicit tear-off of the 'call' method - packages\features\client\settings\lib\src\presentation\blocs\client_settings_bloc.dart:26:13 - implicit_call_tearoffs
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\presentation\blocs\client_settings_state.dart:25:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\client\settings\lib\src\presentation\widgets\client_settings_page\settings_profile_header.dart:80:23 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\client\settings\lib\src\presentation\widgets\client_settings_page\settings_quick_links.dart:69:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:15:3 - sort_constructors_first
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:43:5 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:66:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:118:5 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\data\repositories\view_orders_repository_impl.dart:124:7 - avoid_print
info - Constructor declarations should be before non-constructor declarations - packages\features\client\view_orders\lib\src\domain\usecases\get_orders_use_case.dart:15:3 - sort_constructors_first
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:248:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:257:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\client\view_orders\lib\src\presentation\blocs\view_orders_cubit.dart:266:7 - avoid_print
warning - The declaration '_formatDate' isn't referenced - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:84:10 - unused_element
warning - The receiver can't be null, so the null-aware operator '?.' is unnecessary - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:833:55 - invalid_null_aware_operator
info - Type could be non-nullable - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:872:7 - unnecessary_nullable_for_final_variable_declarations
info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:1615:39 - use_build_context_synchronously
info - Don't use 'BuildContext's across async gaps, guarded by an unrelated 'mounted' check - packages\features\client\view_orders\lib\src\presentation\widgets\view_order_card.dart:1635:39 - use_build_context_synchronously
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\data\repositories_impl\place_repository_impl.dart:9:3 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\data\repositories_impl\place_repository_impl.dart:13:31 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\data\repositories_impl\place_repository_impl.dart:40:21 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\data\repositories_impl\profile_setup_repository_impl.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\arguments\sign_in_with_phone_arguments.dart:13:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\arguments\verify_otp_arguments.dart:21:9 - sort_constructors_first
warning - Unused import: 'package:krow_domain/krow_domain.dart' - packages\features\staff\authentication\lib\src\domain\repositories\profile_setup_repository.dart:1:8 - unused_import
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\search_cities_usecase.dart:6:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\sign_in_with_phone_usecase.dart:15:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\submit_profile_setup_usecase.dart:6:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\domain\usecases\verify_otp_usecase.dart:15:3 - sort_constructors_first
info - The imported package 'bloc' isn't a dependency of the importing package - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:3:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:29:3 - sort_constructors_first
info - Implicit tear-off of the 'call' method - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:114:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\authentication\lib\src\presentation\blocs\auth_bloc.dart:196:13 - implicit_call_tearoffs
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:19:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:39:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:57:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:67:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:78:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_event.dart:89:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\auth_state.dart:49:9 - sort_constructors_first
info - Implicit tear-off of the 'call' method - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:92:13 - implicit_call_tearoffs
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:117:48 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:124:7 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:128:48 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_bloc.dart:136:46 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:17:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:29:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:41:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:53:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:65:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:77:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_event.dart:89:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\blocs\profile_setup\profile_setup_state.dart:36:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\pages\phone_verification_page.dart:23:9 - sort_constructors_first
info - 'WillPopScope' is deprecated and shouldn't be used. Use PopScope instead. The Android predictive back feature will not work with WillPopScope. This feature was deprecated after v3.12.0-1.0.pre - packages\features\staff\authentication\lib\src\presentation\pages\phone_verification_page.dart:138:24 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\authentication\lib\src\presentation\pages\profile_setup_page.dart:157:27 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\common\section_title_subtitle.dart:12:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_actions.dart:9:9 - sort_constructors_first
info - Unnecessary instance of 'Container' - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:9:12 - avoid_unnecessary_containers
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:11:19 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:25:50 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:32:36 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:32:45 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:32:52 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:43:23 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:57:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\get_started_page\get_started_background.dart:66:43 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification.dart:24:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:20:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:31:52 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:35:39 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_input_field.dart:75:21 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_resend_section.dart:14:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_resend_section.dart:35:5 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_verification_actions.dart:18:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_verification_actions.dart:38:17 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\otp_verification\otp_verification_header.dart:11:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\phone_input\phone_input_actions.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\phone_verification_page\phone_input\phone_input_form_field.dart:20:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_basic_info.dart:21:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_experience.dart:22:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_header.dart:17:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:24:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:92:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:92:33 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:94:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:94:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:104:28 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:106:41 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:116:36 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:116:45 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:117:31 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:117:40 - always_specify_types
warning - Missing type annotation - packages\features\staff\authentication\lib\src\presentation\widgets\profile_setup_page\profile_setup_location.dart:118:19 - always_specify_types
info - Library names are not necessary - packages\features\staff\authentication\lib\staff_authentication.dart:1:9 - unnecessary_library_name
info - Statements in an if should be enclosed in a block - packages\features\staff\availability\lib\src\data\repositories_impl\availability_repository_impl.dart:148:28 - curly_braces_in_flow_control_structures
info - Statements in an if should be enclosed in a block - packages\features\staff\availability\lib\src\data\repositories_impl\availability_repository_impl.dart:149:35 - curly_braces_in_flow_control_structures
info - Implicit tear-off of the 'call' method - packages\features\staff\availability\lib\src\presentation\blocs\availability_bloc.dart:34:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\availability\lib\src\presentation\blocs\availability_bloc.dart:106:15 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\availability\lib\src\presentation\blocs\availability_bloc.dart:158:15 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\availability\lib\src\presentation\blocs\availability_bloc.dart:198:15 - implicit_call_tearoffs
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:100:45 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:122:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:192:30 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:193:38 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:224:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:310:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:341:42 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:383:33 - deprecated_member_use
info - 'activeColor' is deprecated and shouldn't be used. Use activeThumbColor instead. This feature was deprecated after v3.31.0-2.0.pre - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:418:17 - deprecated_member_use
info - Unnecessary use of 'toList' in a spread - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:431:14 - unnecessary_to_list_in_spreads
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:484:36 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:485:40 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\availability\lib\src\presentation\pages\availability_page.dart:587:35 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\availability\lib\staff_availability.dart:1:9 - unnecessary_library_name
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\data\repositories_impl\clock_in_repository_impl.dart:109:78 - always_specify_types
info - Implicit tear-off of the 'call' method - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:52:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:91:13 - implicit_call_tearoffs
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:105:11 - unawaited_futures
info - Implicit tear-off of the 'call' method - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:206:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\clock_in\lib\src\presentation\bloc\clock_in_bloc.dart:229:13 - implicit_call_tearoffs
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\clock_in\lib\src\presentation\blocs\clock_in_cubit.dart:89:7 - unawaited_futures
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\blocs\clock_in_cubit.dart:130:11 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\blocs\clock_in_cubit.dart:147:11 - always_specify_types
warning - The value of the local variable 'checkInStr' isn't used - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:68:24 - unused_local_variable
warning - The value of the local variable 'checkOutStr' isn't used - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:71:24 - unused_local_variable
warning - The declaration '_buildModeTab' isn't referenced - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:465:10 - unused_element
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:483:43 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:523:43 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\pages\clock_in_page.dart:573:33 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:34:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:100:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:106:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:112:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\attendance_card.dart:118:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:175:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:273:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:375:23 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:386:53 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:427:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:430:51 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:461:51 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:464:53 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:512:56 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\commute_tracker.dart:541:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\date_selector.dart:19:34 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\date_selector.dart:44:60 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\date_selector.dart:70:44 - deprecated_member_use
info - Unnecessary use of multiple underscores - packages\features\staff\clock_in\lib\src\presentation\widgets\location_map_placeholder.dart:30:24 - unnecessary_underscores
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\location_map_placeholder.dart:59:41 - deprecated_member_use
warning - The value of the field '_tookLunch' isn't used - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:15:9 - unused_field
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:187:60 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:200:60 - always_specify_types
info - 'groupValue' is deprecated and shouldn't be used. Use a RadioGroup ancestor to manage group value instead. This feature was deprecated after v3.32.0-0.0.pre - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:242:16 - deprecated_member_use
info - 'onChanged' is deprecated and shouldn't be used. Use RadioGroup to handle value change instead. This feature was deprecated after v3.32.0-0.0.pre - packages\features\staff\clock_in\lib\src\presentation\widgets\lunch_break_modal.dart:243:16 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:59:7 - always_specify_types
warning - Missing type annotation - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:84:11 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:99:34 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:152:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:168:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\clock_in\lib\src\presentation\widgets\swipe_to_check_in.dart:200:47 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\home_header.dart:36:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\home_header.dart:41:49 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\pending_payment_card.dart:24:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\pending_payment_card.dart:24:75 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\pending_payment_card.dart:29:54 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\placeholder_banner.dart:32:44 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\quick_action_item.dart:34:46 - deprecated_member_use
warning - Dead code - packages\features\staff\home\lib\src\presentation\widgets\home_page\recommended_shift_card.dart:193:45 - dead_code
warning - The left operand can't be null, so the right operand is never executed - packages\features\staff\home\lib\src\presentation\widgets\home_page\recommended_shift_card.dart:193:48 - dead_null_aware_expression
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\section_header.dart:52:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\home_page\section_header.dart:55:45 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:32:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:42:34 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:61:42 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\auto_match_toggle.dart:62:37 - deprecated_member_use
info - 'background' is deprecated and shouldn't be used. Use surface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\benefits_widget.dart:20:46 - deprecated_member_use
info - 'onBackground' is deprecated and shouldn't be used. Use onSurface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\benefits_widget.dart:25:50 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\benefits_widget.dart:25:63 - deprecated_member_use
info - 'background' is deprecated and shouldn't be used. Use surface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:56:48 - deprecated_member_use
info - 'onBackground' is deprecated and shouldn't be used. Use onSurface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:61:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:61:65 - deprecated_member_use
info - 'surfaceVariant' is deprecated and shouldn't be used. Use surfaceContainerHighest instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\improve_yourself_widget.dart:78:56 - deprecated_member_use
info - 'background' is deprecated and shouldn't be used. Use surface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:55:48 - deprecated_member_use
info - 'onBackground' is deprecated and shouldn't be used. Use onSurface instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:60:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:60:65 - deprecated_member_use
info - 'surfaceVariant' is deprecated and shouldn't be used. Use surfaceContainerHighest instead. This feature was deprecated after v3.18.0-0.1.pre - packages\features\staff\home\lib\src\presentation\widgets\worker\more_ways_widget.dart:77:56 - deprecated_member_use
info - Import of a library in the 'lib/src' directory of another package - packages\features\staff\payments\lib\src\payments_module.dart:1:8 - implementation_imports
info - Implicit tear-off of the 'call' method - packages\features\staff\payments\lib\src\presentation\blocs\payments\payments_bloc.dart:28:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\payments\lib\src\presentation\blocs\payments\payments_bloc.dart:54:15 - implicit_call_tearoffs
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\pages\payments_page.dart:114:41 - deprecated_member_use
warning - The value of the local variable 'maxX' isn't used - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:36:18 - unused_local_variable
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:47:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:105:54 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\payments\lib\src\presentation\widgets\earnings_graph.dart:124:12 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\payment_history_item.dart:37:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\payment_stats_card.dart:26:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\payments\lib\src\presentation\widgets\pending_pay_card.dart:27:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\data\repositories\profile_repository_impl.dart:34:5 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\data\repositories\profile_repository_impl.dart:39:5 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\domain\usecases\get_profile_usecase.dart:18:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\domain\usecases\sign_out_usecase.dart:19:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:16:3 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\blocs\profile_cubit.dart:30:9 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\blocs\profile_state.dart:36:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\blocs\profile_state.dart:56:30 - always_specify_types
warning - Duplicate import - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:17:8 - duplicate_import
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:64:20 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:64:29 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:69:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:69:28 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:86:11 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:94:25 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:108:33 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:125:37 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:146:37 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:150:41 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:164:37 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:188:37 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\pages\staff_profile_page.dart:195:45 - always_specify_types
warning - Unused import: 'package:flutter_bloc/flutter_bloc.dart' - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:4:8 - unused_import
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:18:16 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:19:19 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:21:23 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:21:50 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:26:19 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:32:11 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:38:11 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:44:11 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:74:18 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:88:21 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\language_selector_bottom_sheet.dart:96:15 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:12:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:16:5 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:31:22 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:34:25 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\logout_button.dart:36:17 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:23:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:33:5 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:37:16 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:43:19 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:45:23 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:46:19 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:52:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:56:25 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:68:57 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:74:13 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:78:25 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:82:28 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:88:31 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:90:41 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:94:32 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:96:52 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:106:59 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:124:43 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:126:53 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:149:32 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:151:52 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:164:13 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:171:13 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:173:24 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_header.dart:178:40 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:22:17 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:22:26 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:23:9 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:24:9 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:25:9 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_grid.dart:32:35 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:13:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:31:18 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:35:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:40:29 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:45:49 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:51:21 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:53:32 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\profile_menu_item.dart:79:46 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:18:5 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:19:5 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:22:16 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:24:33 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:29:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:32:23 - always_specify_types
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:47:11 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_score_bar.dart:58:22 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:15:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:27:16 - prefer_const_constructors
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:32:20 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:34:40 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:42:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:86:19 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:91:39 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\reliability_stats_card.dart:97:11 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile\lib\src\presentation\widgets\section_title.dart:10:9 - sort_constructors_first
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\section_title.dart:16:16 - prefer_const_constructors
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile\lib\src\presentation\widgets\section_title.dart:17:15 - prefer_const_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\data\repositories_impl\certificates_repository_impl.dart:23:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\domain\usecases\get_certificates_usecase.dart:15:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_cubit.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_state.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_state.dart:30:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\blocs\certificates\certificates_state.dart:34:15 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\add_certificate_card.dart:8:9 - sort_constructors_first
info - The imported package 'intl' isn't a dependency of the importing package - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:3:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:14:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:48:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:62:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:99:46 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_card.dart:416:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificate_upload_modal.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:10:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:42:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:73:55 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\certificates\lib\src\presentation\widgets\certificates_header.dart:103:45 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\compliance\certificates\lib\staff_certificates.dart:1:9 - unnecessary_library_name
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\data\repositories_impl\documents_repository_impl.dart:14:3 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\documents\lib\src\data\repositories_impl\documents_repository_impl.dart:29:12 - always_specify_types
warning - Dead code - packages\features\staff\profile_sections\compliance\documents\lib\src\data\repositories_impl\documents_repository_impl.dart:52:5 - dead_code
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\domain\usecases\get_documents_usecase.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\blocs\documents\documents_cubit.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\blocs\documents\documents_state.dart:11:9 - sort_constructors_first
warning - Unused import: 'package:krow_core/core.dart' - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\pages\documents_page.dart:11:8 - unused_import
info - Constructors for public widgets should have a named 'key' parameter - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\pages\documents_page.dart:15:7 - use_key_in_widget_constructors
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:12:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:35:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:117:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:122:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:127:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:132:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\document_card.dart:137:33 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\documents\lib\src\presentation\widgets\documents_progress_card.dart:17:9 - sort_constructors_first
info - Library names are not necessary - packages\features\staff\profile_sections\compliance\documents\lib\staff_documents.dart:1:9 - unnecessary_library_name
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\mappers\tax_form_mapper.dart:9:43 - always_specify_types
info - The type of the right operand ('TaxFormType') isn't a subtype or a supertype of the left operand ('EnumValue<TaxFormType>') - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\mappers\tax_form_mapper.dart:47:23 - unrelated_type_equality_checks
info - Statements in an if should be enclosed in a block - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\repositories\tax_forms_repository_impl.dart:194:41 - curly_braces_in_flow_control_structures
info - Statements in an if should be enclosed in a block - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\repositories\tax_forms_repository_impl.dart:195:47 - curly_braces_in_flow_control_structures
info - Statements in an if should be enclosed in a block - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\data\repositories\tax_forms_repository_impl.dart:196:44 - curly_braces_in_flow_control_structures
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\get_tax_forms_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\save_i9_form_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\save_w4_form_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\submit_i9_form_usecase.dart:7:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\domain\usecases\submit_w4_form_usecase.dart:7:3 - sort_constructors_first
info - The imported package 'uuid' isn't a dependency of the importing package - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:4:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:13:3 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_cubit.dart:102:47 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_state.dart:38:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\i9\form_i9_state.dart:117:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\tax_forms\tax_forms_cubit.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\tax_forms\tax_forms_state.dart:11:9 - sort_constructors_first
info - The imported package 'uuid' isn't a dependency of the importing package - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:4:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:13:3 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_cubit.dart:95:47 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_state.dart:32:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\blocs\w4\form_w4_state.dart:92:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:12:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:212:81 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:232:50 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:249:77 - deprecated_member_use
info - 'value' is deprecated and shouldn't be used. Use initialValue instead. This will set the initial value for the form field. This feature was deprecated after v3.33.0-1.0.pre - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_i9_page.dart:465:21 - deprecated_member_use
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:12:9 - sort_constructors_first
warning - The value of the field '_usStates' isn't used - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:27:22 - unused_field
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:258:81 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:278:50 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:295:77 - deprecated_member_use
info - Use 'const' with the constructor to improve performance - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\form_w4_page.dart:446:18 - prefer_const_constructors
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:40:47 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:148:11 - always_specify_types
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:150:53 - unawaited_futures
warning - Missing type annotation - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:153:11 - always_specify_types
info - Missing an 'await' for the 'Future' computed by this expression - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:155:53 - unawaited_futures
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\compliance\tax_forms\lib\src\presentation\pages\tax_forms_page.dart:174:41 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\compliance\tax_forms\lib\staff_tax_forms.dart:1:9 - unnecessary_library_name
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\arguments\add_bank_account_params.dart:9:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\arguments\add_bank_account_params.dart:12:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\usecases\add_bank_account_usecase.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\domain\usecases\get_bank_accounts_usecase.dart:9:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_cubit.dart:14:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_state.dart:12:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_state.dart:14:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\blocs\bank_account_state.dart:34:30 - always_specify_types
warning - Unused import: 'package:krow_core/core.dart' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:11:8 - unused_import
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:146:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:202:39 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\pages\bank_account_page.dart:242:37 - deprecated_member_use
warning - Unused import: 'package:flutter_modular/flutter_modular.dart' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:2:8 - unused_import
warning - Unused import: '../blocs/bank_account_cubit.dart' - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:4:8 - unused_import
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:11:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\staff_bank_account\lib\src\presentation\widgets\add_account_form.dart:125:34 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\finances\staff_bank_account\lib\staff_bank_account.dart:1:9 - unnecessary_library_name
info - The imported package 'firebase_auth' isn't a dependency of the importing package - packages\features\staff\profile_sections\finances\time_card\lib\src\data\repositories_impl\time_card_repository_impl.dart:1:8 - depend_on_referenced_packages
info - The imported package 'firebase_data_connect' isn't a dependency of the importing package - packages\features\staff\profile_sections\finances\time_card\lib\src\data\repositories_impl\time_card_repository_impl.dart:2:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\data\repositories_impl\time_card_repository_impl.dart:17:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\domain\arguments\get_time_cards_arguments.dart:8:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\domain\arguments\get_time_cards_arguments.dart:11:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\domain\usecases\get_time_cards_usecase.dart:10:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_bloc.dart:16:3 - sort_constructors_first
info - Implicit tear-off of the 'call' method - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_bloc.dart:28:13 - implicit_call_tearoffs
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:6:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:14:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:19:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_event.dart:22:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:6:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:17:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:25:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:29:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\blocs\time_card_state.dart:31:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:30:12 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:53:21 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:53:30 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\pages\time_card_page.dart:65:29 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\month_selector.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\month_selector.dart:29:19 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:17:17 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:30:27 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\shift_history_list.dart:42:30 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:10:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:19:17 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:45:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:62:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\time_card_summary.dart:64:23 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:11:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:15:5 - always_specify_types
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:22:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:27:41 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:32:37 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:37:41 - deprecated_member_use
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:43:5 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:54:19 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:58:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:61:27 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:98:23 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:116:25 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:139:7 - always_specify_types
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:141:9 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:155:9 - sort_constructors_first
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\presentation\widgets\timesheet_card.dart:161:17 - always_specify_types
info - Library names are not necessary - packages\features\staff\profile_sections\finances\time_card\lib\src\staff_time_card_module.dart:1:9 - unnecessary_library_name
info - The imported package 'firebase_auth' isn't a dependency of the importing package - packages\features\staff\profile_sections\finances\time_card\lib\src\staff_time_card_module.dart:3:8 - depend_on_referenced_packages
warning - Missing type annotation - packages\features\staff\profile_sections\finances\time_card\lib\src\staff_time_card_module.dart:45:15 - always_specify_types
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\data\repositories_impl\attire_repository_impl.dart:15:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\arguments\save_attire_arguments.dart:12:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\arguments\upload_attire_photo_arguments.dart:12:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\usecases\get_attire_options_usecase.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\usecases\save_attire_usecase.dart:11:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\domain\usecases\upload_attire_photo_usecase.dart:10:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_cubit.dart:18:3 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\blocs\attire_state.dart:15:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attestation_checkbox.dart:9:9 - sort_constructors_first
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_bottom_bar.dart:12:9 - sort_constructors_first
info - The imported package 'lucide_icons' isn't a dependency of the importing package - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:3:8 - depend_on_referenced_packages
info - Constructor declarations should be before non-constructor declarations - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:15:9 - sort_constructors_first
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:56:46 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_grid.dart:156:46 - deprecated_member_use
info - The imported package 'lucide_icons' isn't a dependency of the importing package - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_info_card.dart:3:8 - depend_on_referenced_packages
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\attire\lib\src\presentation\widgets\attire_info_card.dart:14:33 - deprecated_member_use
info - Library names are not necessary - packages\features\staff\profile_sections\onboarding\attire\lib\staff_attire.dart:1:9 - unnecessary_library_name
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\emergency_contact\lib\src\presentation\widgets\emergency_contact_info_banner.dart:12:32 - deprecated_member_use
info - Constructors in '@immutable' classes should be declared as 'const' - packages\features\staff\profile_sections\onboarding\experience\lib\src\domain\arguments\save_experience_arguments.dart:7:3 - prefer_const_constructors_in_immutables
info - Implicit tear-off of the 'call' method - packages\features\staff\profile_sections\onboarding\experience\lib\src\presentation\blocs\experience_bloc.dart:127:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\profile_sections\onboarding\experience\lib\src\presentation\blocs\experience_bloc.dart:192:13 - implicit_call_tearoffs
warning - The declaration '_buildCustomSkillsList' isn't referenced - packages\features\staff\profile_sections\onboarding\experience\lib\src\presentation\pages\experience_page.dart:140:10 - unused_element
info - Library names are not necessary - packages\features\staff\profile_sections\onboarding\experience\lib\staff_profile_experience.dart:1:9 - unnecessary_library_name
info - Implicit tear-off of the 'call' method - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\blocs\personal_info_bloc.dart:45:13 - implicit_call_tearoffs
warning - Missing type annotation - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\blocs\personal_info_bloc.dart:82:48 - always_specify_types
info - Implicit tear-off of the 'call' method - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\blocs\personal_info_bloc.dart:96:13 - implicit_call_tearoffs
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\widgets\profile_photo_widget.dart:44:43 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\profile_sections\onboarding\profile_info\lib\src\presentation\widgets\profile_photo_widget.dart:74:53 - deprecated_member_use
info - The imported package 'firebase_auth' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\data\repositories_impl\shifts_repository_impl.dart:4:8 - depend_on_referenced_packages
info - The imported package 'firebase_data_connect' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\data\repositories_impl\shifts_repository_impl.dart:5:8 - depend_on_referenced_packages
info - The imported package 'bloc' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:1:8 - depend_on_referenced_packages
info - Implicit tear-off of the 'call' method - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:32:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:52:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\shifts\lib\src\presentation\blocs\shift_details\shift_details_bloc.dart:72:13 - implicit_call_tearoffs
info - The imported package 'bloc' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:1:8 - depend_on_referenced_packages
info - The imported package 'meta' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:5:8 - depend_on_referenced_packages
info - Implicit tear-off of the 'call' method - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:50:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:86:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:115:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:163:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:203:13 - implicit_call_tearoffs
info - Implicit tear-off of the 'call' method - packages\features\staff\shifts\lib\src\presentation\blocs\shifts\shifts_bloc.dart:249:15 - implicit_call_tearoffs
info - Don't invoke 'print' in production code - packages\features\staff\shifts\lib\src\presentation\pages\shifts_page.dart:32:5 - avoid_print
info - Don't invoke 'print' in production code - packages\features\staff\shifts\lib\src\presentation\pages\shifts_page.dart:40:7 - avoid_print
info - Don't invoke 'print' in production code - packages\features\staff\shifts\lib\src\presentation\pages\shifts_page.dart:44:7 - avoid_print
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:128:35 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:183:57 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:208:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:209:48 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\my_shift_card.dart:216:53 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:74:33 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:100:46 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:101:46 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\shift_assignment_card.dart:108:51 - deprecated_member_use
info - The imported package 'lucide_icons' isn't a dependency of the importing package - packages\features\staff\shifts\lib\src\presentation\widgets\tabs\my_shifts_tab.dart:4:8 - depend_on_referenced_packages
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\tabs\my_shifts_tab.dart:316:54 - deprecated_member_use
info - 'withOpacity' is deprecated and shouldn't be used. Use .withValues() to avoid precision loss - packages\features\staff\shifts\lib\src\presentation\widgets\tabs\my_shifts_tab.dart:507:47 - deprecated_member_use
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\staff\staff_main\lib\src\presentation\blocs\staff_main_cubit.dart:2:8 - depend_on_referenced_packages
info - The imported package 'krow_core' isn't a dependency of the importing package - packages\features\staff\staff_main\lib\src\staff_main_module.dart:3:8 - depend_on_referenced_packages

View File

@@ -1,5 +1,5 @@
import 'dart:developer' as developer; import 'dart:developer' as developer;
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
/// Mixin to standardize error handling across all BLoCs. /// Mixin to standardize error handling across all BLoCs.
@@ -45,7 +45,7 @@ mixin BlocErrorHandler<S> {
/// - Logs full error and stack trace /// - Logs full error and stack trace
/// - Emits generic error state /// - Emits generic error state
Future<void> handleError({ Future<void> handleError({
required Emitter<S> emit, required void Function(S) emit,
required Future<void> Function() action, required Future<void> Function() action,
required S Function(String errorKey) onError, required S Function(String errorKey) onError,
String? loggerName, String? loggerName,

View File

@@ -15,3 +15,5 @@ dependencies:
path: ../design_system path: ../design_system
equatable: ^2.0.8 equatable: ^2.0.8
flutter_modular: ^6.4.1 flutter_modular: ^6.4.1
krow_domain:
path: ../domain

View File

@@ -382,91 +382,91 @@
}, },
"home": { "home": {
"header": { "header": {
"welcome_back": "Welcome back", "welcome_back": "Bienvenido de nuevo",
"user_name_placeholder": "Krower" "user_name_placeholder": "Krower"
}, },
"banners": { "banners": {
"complete_profile_title": "Complete Your Profile", "complete_profile_title": "Completa tu Perfil",
"complete_profile_subtitle": "Get verified to see more shifts", "complete_profile_subtitle": "Verifícate para ver más turnos",
"availability_title": "Availability", "availability_title": "Disponibilidad",
"availability_subtitle": "Update your availability for next week" "availability_subtitle": "Actualiza tu disponibilidad para la próxima semana"
}, },
"quick_actions": { "quick_actions": {
"find_shifts": "Find Shifts", "find_shifts": "Buscar Turnos",
"availability": "Availability", "availability": "Disponibilidad",
"messages": "Messages", "messages": "Mensajes",
"earnings": "Earnings" "earnings": "Ganancias"
}, },
"sections": { "sections": {
"todays_shift": "Today's Shift", "todays_shift": "Turno de Hoy",
"scheduled_count": "$count scheduled", "scheduled_count": "$count programados",
"tomorrow": "Tomorrow", "tomorrow": "Mañana",
"recommended_for_you": "Recommended for You", "recommended_for_you": "Recomendado para Ti",
"view_all": "View all" "view_all": "Ver todo"
}, },
"empty_states": { "empty_states": {
"no_shifts_today": "No shifts scheduled for today", "no_shifts_today": "No hay turnos programados para hoy",
"find_shifts_cta": "Find shifts →", "find_shifts_cta": "Buscar turnos →",
"no_shifts_tomorrow": "No shifts for tomorrow", "no_shifts_tomorrow": "No hay turnos para mañana",
"no_recommended_shifts": "No recommended shifts" "no_recommended_shifts": "No hay turnos recomendados"
}, },
"pending_payment": { "pending_payment": {
"title": "Pending Payment", "title": "Pago Pendiente",
"subtitle": "Payment processing", "subtitle": "Procesando pago",
"amount": "$amount" "amount": "$amount"
}, },
"recommended_card": { "recommended_card": {
"act_now": "• ACT NOW", "act_now": "• ACTÚA AHORA",
"one_day": "One Day", "one_day": "Un Día",
"today": "Today", "today": "Hoy",
"applied_for": "Applied for $title", "applied_for": "Postulado para $title",
"time_range": "$start - $end" "time_range": "$start - $end"
}, },
"benefits": { "benefits": {
"title": "Your Benefits", "title": "Tus Beneficios",
"view_all": "View all", "view_all": "Ver todo",
"hours_label": "hours", "hours_label": "horas",
"items": { "items": {
"sick_days": "Sick Days", "sick_days": "Días de Enfermedad",
"vacation": "Vacation", "vacation": "Vacaciones",
"holidays": "Holidays" "holidays": "Festivos"
} }
}, },
"auto_match": { "auto_match": {
"title": "Auto-Match", "title": "Auto-Match",
"finding_shifts": "Finding shifts for you", "finding_shifts": "Buscando turnos para ti",
"get_matched": "Get matched automatically", "get_matched": "Sé emparejado automáticamente",
"matching_based_on": "Matching based on:", "matching_based_on": "Emparejamiento basado en:",
"chips": { "chips": {
"location": "Location", "location": "Ubicación",
"availability": "Availability", "availability": "Disponibilidad",
"skills": "Skills" "skills": "Habilidades"
} }
}, },
"improve": { "improve": {
"title": "Improve Yourself", "title": "Mejórate a ti mismo",
"items": { "items": {
"training": { "training": {
"title": "Training Section", "title": "Sección de Entrenamiento",
"description": "Improve your skills and get certified.", "description": "Mejora tus habilidades y obtén certificaciones.",
"page": "/krow-university" "page": "/krow-university"
}, },
"podcast": { "podcast": {
"title": "Krow Podcast", "title": "Podcast de Krow",
"description": "Listen to tips from top workers.", "description": "Escucha consejos de los mejores trabajadores.",
"page": "/krow-university" "page": "/krow-university"
} }
} }
}, },
"more_ways": { "more_ways": {
"title": "More Ways To Use Krow", "title": "Más Formas de Usar Krow",
"items": { "items": {
"benefits": { "benefits": {
"title": "Krow Benefits", "title": "Beneficios de Krow",
"page": "/benefits" "page": "/benefits"
}, },
"refer": { "refer": {
"title": "Refer a Friend", "title": "Recomendar a un Amigo",
"page": "/worker-profile" "page": "/worker-profile"
} }
} }
@@ -596,62 +596,62 @@
} }
}, },
"staff_documents": { "staff_documents": {
"title": "Documents", "title": "Documentos",
"verification_card": { "verification_card": {
"title": "Document Verification", "title": "Verificación de Documentos",
"progress": "$completed/$total Complete" "progress": "$completed/$total Completado"
}, },
"list": { "list": {
"empty": "No documents found", "empty": "No se encontraron documentos",
"error": "Error: $message" "error": "Error: $message"
}, },
"card": { "card": {
"view": "View", "view": "Ver",
"upload": "Upload", "upload": "Subir",
"verified": "Verified", "verified": "Verificado",
"pending": "Pending", "pending": "Pendiente",
"missing": "Missing", "missing": "Faltante",
"rejected": "Rejected" "rejected": "Rechazado"
} }
}, },
"staff_certificates": { "staff_certificates": {
"title": "Certificates", "title": "Certificados",
"progress": { "progress": {
"title": "Your Progress", "title": "Tu Progreso",
"verified_count": "$completed of $total verified", "verified_count": "$completed de $total verificados",
"active": "Compliance Active" "active": "Cumplimiento Activo"
}, },
"card": { "card": {
"expires_in_days": "Expires in $days days - Renew now", "expires_in_days": "Expira en $days días - Renovar ahora",
"expired": "Expired - Renew now", "expired": "Expirado - Renovar ahora",
"verified": "Verified", "verified": "Verificado",
"expiring_soon": "Expiring Soon", "expiring_soon": "Expira Pronto",
"exp": "Exp: $date", "exp": "Exp: $date",
"upload_button": "Upload Certificate", "upload_button": "Subir Certificado",
"edit_expiry": "Edit Expiration Date", "edit_expiry": "Editar Fecha de Expiración",
"remove": "Remove Certificate", "remove": "Eliminar Certificado",
"renew": "Renew", "renew": "Renovar",
"opened_snackbar": "Certificate opened in new tab" "opened_snackbar": "Certificado abierto en nueva pestaña"
}, },
"add_more": { "add_more": {
"title": "Add Another Certificate", "title": "Agregar Otro Certificado",
"subtitle": "Upload additional certifications" "subtitle": "Subir certificaciones adicionales"
}, },
"upload_modal": { "upload_modal": {
"title": "Upload Certificate", "title": "Subir Certificado",
"expiry_label": "Expiration Date (Optional)", "expiry_label": "Fecha de Expiración (Opcional)",
"select_date": "Select date", "select_date": "Seleccionar fecha",
"upload_file": "Upload File", "upload_file": "Subir Archivo",
"drag_drop": "Drag and drop or click to upload", "drag_drop": "Arrastra y suelta o haz clic para subir",
"supported_formats": "PDF, JPG, PNG up to 10MB", "supported_formats": "PDF, JPG, PNG hasta 10MB",
"cancel": "Cancel", "cancel": "Cancelar",
"save": "Save Certificate" "save": "Guardar Certificado"
}, },
"delete_modal": { "delete_modal": {
"title": "Remove Certificate?", "title": "¿Eliminar Certificado?",
"message": "This action cannot be undone.", "message": "Esta acción no se puede deshacer.",
"cancel": "Cancel", "cancel": "Cancelar",
"confirm": "Remove" "confirm": "Eliminar"
} }
}, },
"staff_profile_attire": { "staff_profile_attire": {
@@ -677,45 +677,45 @@
} }
}, },
"staff_shifts": { "staff_shifts": {
"title": "Shifts", "title": "Turnos",
"tabs": { "tabs": {
"my_shifts": "My Shifts", "my_shifts": "Mis Turnos",
"find_work": "Find Work" "find_work": "Buscar Trabajo"
}, },
"list": { "list": {
"no_shifts": "No shifts found", "no_shifts": "No se encontraron turnos",
"pending_offers": "PENDING OFFERS", "pending_offers": "OFERTAS PENDIENTES",
"available_jobs": "$count AVAILABLE JOBS", "available_jobs": "$count EMPLEOS DISPONIBLES",
"search_hint": "Search jobs..." "search_hint": "Buscar empleos..."
}, },
"filter": { "filter": {
"all": "All Jobs", "all": "Todos los Empleos",
"one_day": "One Day", "one_day": "Un Día",
"multi_day": "Multi Day", "multi_day": "Multidía",
"long_term": "Long Term" "long_term": "Largo Plazo"
}, },
"status": { "status": {
"confirmed": "CONFIRMED", "confirmed": "CONFIRMADO",
"act_now": "ACT NOW", "act_now": "ACTÚA AHORA",
"swap_requested": "SWAP REQUESTED", "swap_requested": "INTERCAMBIO SOLICITADO",
"completed": "COMPLETED", "completed": "COMPLETADO",
"no_show": "NO SHOW", "no_show": "NO ASISTIÓ",
"pending_warning": "Please confirm assignment" "pending_warning": "Por favor confirma la asignación"
}, },
"action": { "action": {
"decline": "Decline", "decline": "Rechazar",
"confirm": "Confirm", "confirm": "Confirmar",
"request_swap": "Request Swap" "request_swap": "Solicitar Intercambio"
}, },
"details": { "details": {
"additional": "ADDITIONAL DETAILS", "additional": "DETALLES ADICIONALES",
"days": "$days Days", "days": "$days Días",
"exp_total": "(exp.total \\$$amount)", "exp_total": "(total est. \\$$amount)",
"pending_time": "Pending $time ago" "pending_time": "Pendiente hace $time"
}, },
"tags": { "tags": {
"immediate_start": "Immediate start", "immediate_start": "Inicio inmediato",
"no_experience": "No experience" "no_experience": "Sin experiencia"
} }
}, },
"staff_time_card": { "staff_time_card": {

View File

@@ -222,4 +222,7 @@ class UiIcons {
/// Award icon /// Award icon
static const IconData award = _IconLib.award; static const IconData award = _IconLib.award;
/// Globe icon
static const IconData globe = _IconLib.globe;
} }

View File

@@ -1,4 +1,5 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/usecases/get_current_bill_amount.dart'; import '../../domain/usecases/get_current_bill_amount.dart';
import '../../domain/usecases/get_invoice_history.dart'; import '../../domain/usecases/get_invoice_history.dart';
@@ -11,7 +12,8 @@ import 'billing_event.dart';
import 'billing_state.dart'; import 'billing_state.dart';
/// BLoC for managing billing state and data loading. /// BLoC for managing billing state and data loading.
class BillingBloc extends Bloc<BillingEvent, BillingState> { class BillingBloc extends Bloc<BillingEvent, BillingState>
with BlocErrorHandler<BillingState> {
/// Creates a [BillingBloc] with the given use cases. /// Creates a [BillingBloc] with the given use cases.
BillingBloc({ BillingBloc({
required GetCurrentBillAmountUseCase getCurrentBillAmount, required GetCurrentBillAmountUseCase getCurrentBillAmount,
@@ -40,8 +42,11 @@ class BillingBloc extends Bloc<BillingEvent, BillingState> {
Emitter<BillingState> emit, Emitter<BillingState> emit,
) async { ) async {
emit(state.copyWith(status: BillingStatus.loading)); emit(state.copyWith(status: BillingStatus.loading));
try { await handleError(
final List<dynamic> results = await Future.wait<dynamic>(<Future<dynamic>>[ emit: emit,
action: () async {
final List<dynamic> results =
await Future.wait<dynamic>(<Future<dynamic>>[
_getCurrentBillAmount.call(), _getCurrentBillAmount.call(),
_getSavingsAmount.call(), _getSavingsAmount.call(),
_getPendingInvoices.call(), _getPendingInvoices.call(),
@@ -56,13 +61,12 @@ class BillingBloc extends Bloc<BillingEvent, BillingState> {
final List<InvoiceItem> spendingItems = results[4] as List<InvoiceItem>; final List<InvoiceItem> spendingItems = results[4] as List<InvoiceItem>;
// Map Domain Entities to Presentation Models // Map Domain Entities to Presentation Models
final List<BillingInvoice> uiPendingInvoices = pendingInvoices final List<BillingInvoice> uiPendingInvoices =
.map(_mapInvoiceToUiModel) pendingInvoices.map(_mapInvoiceToUiModel).toList();
.toList(); final List<BillingInvoice> uiInvoiceHistory =
final List<BillingInvoice> uiInvoiceHistory = invoiceHistory invoiceHistory.map(_mapInvoiceToUiModel).toList();
.map(_mapInvoiceToUiModel) final List<SpendingBreakdownItem> uiSpendingBreakdown =
.toList(); _mapSpendingItemsToUiModel(spendingItems);
final List<SpendingBreakdownItem> uiSpendingBreakdown = _mapSpendingItemsToUiModel(spendingItems);
final double periodTotal = uiSpendingBreakdown.fold( final double periodTotal = uiSpendingBreakdown.fold(
0.0, 0.0,
(double sum, SpendingBreakdownItem item) => sum + item.amount, (double sum, SpendingBreakdownItem item) => sum + item.amount,
@@ -78,21 +82,21 @@ class BillingBloc extends Bloc<BillingEvent, BillingState> {
spendingBreakdown: uiSpendingBreakdown, spendingBreakdown: uiSpendingBreakdown,
), ),
); );
} catch (e) { },
emit( onError: (String errorKey) => state.copyWith(
state.copyWith(
status: BillingStatus.failure, status: BillingStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
), ),
); );
} }
}
Future<void> _onPeriodChanged( Future<void> _onPeriodChanged(
BillingPeriodChanged event, BillingPeriodChanged event,
Emitter<BillingState> emit, Emitter<BillingState> emit,
) async { ) async {
try { await handleError(
emit: emit,
action: () async {
final List<InvoiceItem> spendingItems = final List<InvoiceItem> spendingItems =
await _getSpendingBreakdown.call(event.period); await _getSpendingBreakdown.call(event.period);
final List<SpendingBreakdownItem> uiSpendingBreakdown = final List<SpendingBreakdownItem> uiSpendingBreakdown =
@@ -108,15 +112,13 @@ class BillingBloc extends Bloc<BillingEvent, BillingState> {
currentBill: periodTotal, currentBill: periodTotal,
), ),
); );
} catch (e) { },
emit( onError: (String errorKey) => state.copyWith(
state.copyWith(
status: BillingStatus.failure, status: BillingStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
), ),
); );
} }
}
BillingInvoice _mapInvoiceToUiModel(Invoice invoice) { BillingInvoice _mapInvoiceToUiModel(Invoice invoice) {
// In a real app, fetches related Event/Business names via ID. // In a real app, fetches related Event/Business names via ID.

View File

@@ -1,6 +1,7 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import '../../domain/arguments/get_coverage_stats_arguments.dart'; import '../../domain/arguments/get_coverage_stats_arguments.dart';
import '../../domain/arguments/get_shifts_for_date_arguments.dart'; import '../../domain/arguments/get_shifts_for_date_arguments.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/usecases/get_coverage_stats_usecase.dart'; import '../../domain/usecases/get_coverage_stats_usecase.dart';
import '../../domain/usecases/get_shifts_for_date_usecase.dart'; import '../../domain/usecases/get_shifts_for_date_usecase.dart';
@@ -13,7 +14,8 @@ import 'coverage_state.dart';
/// - Loading shifts for a specific date /// - Loading shifts for a specific date
/// - Loading coverage statistics /// - Loading coverage statistics
/// - Refreshing coverage data /// - Refreshing coverage data
class CoverageBloc extends Bloc<CoverageEvent, CoverageState> { class CoverageBloc extends Bloc<CoverageEvent, CoverageState>
with BlocErrorHandler<CoverageState> {
/// Creates a [CoverageBloc]. /// Creates a [CoverageBloc].
CoverageBloc({ CoverageBloc({
required GetShiftsForDateUseCase getShiftsForDate, required GetShiftsForDateUseCase getShiftsForDate,
@@ -40,7 +42,9 @@ class CoverageBloc extends Bloc<CoverageEvent, CoverageState> {
), ),
); );
try { await handleError(
emit: emit,
action: () async {
// Fetch shifts and stats concurrently // Fetch shifts and stats concurrently
final List<Object> results = await Future.wait<Object>(<Future<Object>>[ final List<Object> results = await Future.wait<Object>(<Future<Object>>[
_getShiftsForDate(GetShiftsForDateArguments(date: event.date)), _getShiftsForDate(GetShiftsForDateArguments(date: event.date)),
@@ -57,15 +61,13 @@ class CoverageBloc extends Bloc<CoverageEvent, CoverageState> {
stats: stats, stats: stats,
), ),
); );
} catch (error) { },
emit( onError: (String errorKey) => state.copyWith(
state.copyWith(
status: CoverageStatus.failure, status: CoverageStatus.failure,
errorMessage: error.toString(), errorMessage: errorKey,
), ),
); );
} }
}
/// Handles the refresh requested event. /// Handles the refresh requested event.
Future<void> _onRefreshRequested( Future<void> _onRefreshRequested(
@@ -78,3 +80,4 @@ class CoverageBloc extends Bloc<CoverageEvent, CoverageState> {
add(CoverageLoadRequested(date: state.selectedDate!)); add(CoverageLoadRequested(date: state.selectedDate!));
} }
} }

View File

@@ -128,9 +128,7 @@ class ClientCreateOrderRepositoryImpl
final double rate = order.roleRates[position.role] ?? 0; final double rate = order.roleRates[position.role] ?? 0;
final double totalValue = rate * hours * position.count; final double totalValue = rate * hours * position.count;
print(
'CreateOneTimeOrder shiftRole: start=${start.toIso8601String()} end=${normalizedEnd.toIso8601String()}',
);
await executeProtected(() => _dataConnect await executeProtected(() => _dataConnect
.createShiftRole( .createShiftRole(

View File

@@ -1,4 +1,5 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/usecases/get_order_types_usecase.dart'; import '../../domain/usecases/get_order_types_usecase.dart';
import 'client_create_order_event.dart'; import 'client_create_order_event.dart';
@@ -6,7 +7,8 @@ import 'client_create_order_state.dart';
/// BLoC for managing the list of available order types. /// BLoC for managing the list of available order types.
class ClientCreateOrderBloc class ClientCreateOrderBloc
extends Bloc<ClientCreateOrderEvent, ClientCreateOrderState> { extends Bloc<ClientCreateOrderEvent, ClientCreateOrderState>
with BlocErrorHandler<ClientCreateOrderState> {
ClientCreateOrderBloc(this._getOrderTypesUseCase) ClientCreateOrderBloc(this._getOrderTypesUseCase)
: super(const ClientCreateOrderInitial()) { : super(const ClientCreateOrderInitial()) {
on<ClientCreateOrderTypesRequested>(_onTypesRequested); on<ClientCreateOrderTypesRequested>(_onTypesRequested);
@@ -17,7 +19,14 @@ class ClientCreateOrderBloc
ClientCreateOrderTypesRequested event, ClientCreateOrderTypesRequested event,
Emitter<ClientCreateOrderState> emit, Emitter<ClientCreateOrderState> emit,
) async { ) async {
await handleError(
emit: emit,
action: () async {
final List<OrderType> types = await _getOrderTypesUseCase(); final List<OrderType> types = await _getOrderTypesUseCase();
emit(ClientCreateOrderLoadSuccess(types)); emit(ClientCreateOrderLoadSuccess(types));
},
onError: (String errorKey) => ClientCreateOrderLoadFailure(errorKey),
);
} }
} }

View File

@@ -24,3 +24,13 @@ class ClientCreateOrderLoadSuccess extends ClientCreateOrderState {
@override @override
List<Object?> get props => <Object?>[orderTypes]; List<Object?> get props => <Object?>[orderTypes];
} }
/// State representing a failure to load order types.
class ClientCreateOrderLoadFailure extends ClientCreateOrderState {
const ClientCreateOrderLoadFailure(this.error);
final String error;
@override
List<Object?> get props => <Object?>[error];
}

View File

@@ -1,5 +1,6 @@
import 'package:firebase_data_connect/firebase_data_connect.dart'; import 'package:firebase_data_connect/firebase_data_connect.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_data_connect/krow_data_connect.dart' as dc; import 'package:krow_data_connect/krow_data_connect.dart' as dc;
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/arguments/one_time_order_arguments.dart'; import '../../domain/arguments/one_time_order_arguments.dart';
@@ -8,7 +9,8 @@ import 'one_time_order_event.dart';
import 'one_time_order_state.dart'; import 'one_time_order_state.dart';
/// BLoC for managing the multi-step one-time order creation form. /// BLoC for managing the multi-step one-time order creation form.
class OneTimeOrderBloc extends Bloc<OneTimeOrderEvent, OneTimeOrderState> { class OneTimeOrderBloc extends Bloc<OneTimeOrderEvent, OneTimeOrderState>
with BlocErrorHandler<OneTimeOrderState> {
OneTimeOrderBloc(this._createOneTimeOrderUseCase, this._dataConnect) OneTimeOrderBloc(this._createOneTimeOrderUseCase, this._dataConnect)
: super(OneTimeOrderState.initial()) { : super(OneTimeOrderState.initial()) {
on<OneTimeOrderVendorsLoaded>(_onVendorsLoaded); on<OneTimeOrderVendorsLoaded>(_onVendorsLoaded);
@@ -29,9 +31,11 @@ class OneTimeOrderBloc extends Bloc<OneTimeOrderEvent, OneTimeOrderState> {
final dc.ExampleConnector _dataConnect; final dc.ExampleConnector _dataConnect;
Future<void> _loadVendors() async { Future<void> _loadVendors() async {
try { final List<Vendor>? vendors = await handleErrorWithResult(
final QueryResult<dc.ListVendorsData, void> result = await _dataConnect.listVendors().execute(); action: () async {
final List<Vendor> vendors = result.data.vendors final QueryResult<dc.ListVendorsData, void> result =
await _dataConnect.listVendors().execute();
return result.data.vendors
.map( .map(
(dc.ListVendorsVendors vendor) => Vendor( (dc.ListVendorsVendors vendor) => Vendor(
id: vendor.id, id: vendor.id,
@@ -40,18 +44,21 @@ class OneTimeOrderBloc extends Bloc<OneTimeOrderEvent, OneTimeOrderState> {
), ),
) )
.toList(); .toList();
},
onError: (_) => add(const OneTimeOrderVendorsLoaded(<Vendor>[])),
);
if (vendors != null) {
add(OneTimeOrderVendorsLoaded(vendors)); add(OneTimeOrderVendorsLoaded(vendors));
} catch (_) {
add(const OneTimeOrderVendorsLoaded(<Vendor>[]));
} }
} }
Future<void> _loadRolesForVendor(String vendorId) async { Future<void> _loadRolesForVendor(String vendorId, Emitter<OneTimeOrderState> emit) async {
try { final List<OneTimeOrderRoleOption>? roles = await handleErrorWithResult(
final QueryResult<dc.ListRolesByVendorIdData, dc.ListRolesByVendorIdVariables> result = await _dataConnect.listRolesByVendorId( action: () async {
vendorId: vendorId, final QueryResult<dc.ListRolesByVendorIdData, dc.ListRolesByVendorIdVariables>
).execute(); result = await _dataConnect.listRolesByVendorId(vendorId: vendorId).execute();
final List<OneTimeOrderRoleOption> roles = result.data.roles return result.data.roles
.map( .map(
(dc.ListRolesByVendorIdRoles role) => OneTimeOrderRoleOption( (dc.ListRolesByVendorIdRoles role) => OneTimeOrderRoleOption(
id: role.id, id: role.id,
@@ -60,22 +67,28 @@ class OneTimeOrderBloc extends Bloc<OneTimeOrderEvent, OneTimeOrderState> {
), ),
) )
.toList(); .toList();
},
onError: (_) => emit(state.copyWith(roles: const <OneTimeOrderRoleOption>[])),
);
if (roles != null) {
emit(state.copyWith(roles: roles)); emit(state.copyWith(roles: roles));
} catch (_) {
emit(state.copyWith(roles: const <OneTimeOrderRoleOption>[]));
} }
} }
Future<void> _loadHubs() async { Future<void> _loadHubs() async {
try { final List<OneTimeOrderHubOption>? hubs = await handleErrorWithResult(
final String? businessId = dc.ClientSessionStore.instance.session?.business?.id; action: () async {
final String? businessId =
dc.ClientSessionStore.instance.session?.business?.id;
if (businessId == null || businessId.isEmpty) { if (businessId == null || businessId.isEmpty) {
add(const OneTimeOrderHubsLoaded(<OneTimeOrderHubOption>[])); return <OneTimeOrderHubOption>[];
return;
} }
final QueryResult<dc.ListTeamHubsByOwnerIdData, dc.ListTeamHubsByOwnerIdVariables> final QueryResult<dc.ListTeamHubsByOwnerIdData, dc.ListTeamHubsByOwnerIdVariables>
result = await _dataConnect.listTeamHubsByOwnerId(ownerId: businessId).execute(); result = await _dataConnect
final List<OneTimeOrderHubOption> hubs = result.data.teamHubs .listTeamHubsByOwnerId(ownerId: businessId)
.execute();
return result.data.teamHubs
.map( .map(
(dc.ListTeamHubsByOwnerIdTeamHubs hub) => OneTimeOrderHubOption( (dc.ListTeamHubsByOwnerIdTeamHubs hub) => OneTimeOrderHubOption(
id: hub.id, id: hub.id,
@@ -92,16 +105,19 @@ class OneTimeOrderBloc extends Bloc<OneTimeOrderEvent, OneTimeOrderState> {
), ),
) )
.toList(); .toList();
},
onError: (_) => add(const OneTimeOrderHubsLoaded(<OneTimeOrderHubOption>[])),
);
if (hubs != null) {
add(OneTimeOrderHubsLoaded(hubs)); add(OneTimeOrderHubsLoaded(hubs));
} catch (_) {
add(const OneTimeOrderHubsLoaded(<OneTimeOrderHubOption>[]));
} }
} }
void _onVendorsLoaded( Future<void> _onVendorsLoaded(
OneTimeOrderVendorsLoaded event, OneTimeOrderVendorsLoaded event,
Emitter<OneTimeOrderState> emit, Emitter<OneTimeOrderState> emit,
) { ) async {
final Vendor? selectedVendor = final Vendor? selectedVendor =
event.vendors.isNotEmpty ? event.vendors.first : null; event.vendors.isNotEmpty ? event.vendors.first : null;
emit( emit(
@@ -111,16 +127,16 @@ class OneTimeOrderBloc extends Bloc<OneTimeOrderEvent, OneTimeOrderState> {
), ),
); );
if (selectedVendor != null) { if (selectedVendor != null) {
_loadRolesForVendor(selectedVendor.id); await _loadRolesForVendor(selectedVendor.id, emit);
} }
} }
void _onVendorChanged( Future<void> _onVendorChanged(
OneTimeOrderVendorChanged event, OneTimeOrderVendorChanged event,
Emitter<OneTimeOrderState> emit, Emitter<OneTimeOrderState> emit,
) { ) async {
emit(state.copyWith(selectedVendor: event.vendor)); emit(state.copyWith(selectedVendor: event.vendor));
_loadRolesForVendor(event.vendor.id); await _loadRolesForVendor(event.vendor.id, emit);
} }
void _onHubsLoaded( void _onHubsLoaded(
@@ -207,13 +223,16 @@ class OneTimeOrderBloc extends Bloc<OneTimeOrderEvent, OneTimeOrderState> {
Emitter<OneTimeOrderState> emit, Emitter<OneTimeOrderState> emit,
) async { ) async {
emit(state.copyWith(status: OneTimeOrderStatus.loading)); emit(state.copyWith(status: OneTimeOrderStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final Map<String, double> roleRates = <String, double>{ final Map<String, double> roleRates = <String, double>{
for (final OneTimeOrderRoleOption role in state.roles) role.id: role.costPerHour, for (final OneTimeOrderRoleOption role in state.roles)
role.id: role.costPerHour,
}; };
final OneTimeOrderHubOption? selectedHub = state.selectedHub; final OneTimeOrderHubOption? selectedHub = state.selectedHub;
if (selectedHub == null) { if (selectedHub == null) {
throw Exception('Hub is missing.'); throw const OrderMissingHubException();
} }
final OneTimeOrder order = OneTimeOrder( final OneTimeOrder order = OneTimeOrder(
date: state.date, date: state.date,
@@ -238,13 +257,11 @@ class OneTimeOrderBloc extends Bloc<OneTimeOrderEvent, OneTimeOrderState> {
); );
await _createOneTimeOrderUseCase(OneTimeOrderArguments(order: order)); await _createOneTimeOrderUseCase(OneTimeOrderArguments(order: order));
emit(state.copyWith(status: OneTimeOrderStatus.success)); emit(state.copyWith(status: OneTimeOrderStatus.success));
} catch (e) { },
emit( onError: (String errorKey) => state.copyWith(
state.copyWith(
status: OneTimeOrderStatus.failure, status: OneTimeOrderStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
), ),
); );
} }
}
} }

View File

@@ -1,11 +1,13 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import '../../domain/arguments/rapid_order_arguments.dart'; import '../../domain/arguments/rapid_order_arguments.dart';
import '../../domain/usecases/create_rapid_order_usecase.dart'; import '../../domain/usecases/create_rapid_order_usecase.dart';
import 'rapid_order_event.dart'; import 'rapid_order_event.dart';
import 'rapid_order_state.dart'; import 'rapid_order_state.dart';
/// BLoC for managing the rapid (urgent) order creation flow. /// BLoC for managing the rapid (urgent) order creation flow.
class RapidOrderBloc extends Bloc<RapidOrderEvent, RapidOrderState> { class RapidOrderBloc extends Bloc<RapidOrderEvent, RapidOrderState>
with BlocErrorHandler<RapidOrderState> {
RapidOrderBloc(this._createRapidOrderUseCase) RapidOrderBloc(this._createRapidOrderUseCase)
: super( : super(
const RapidOrderInitial( const RapidOrderInitial(
@@ -64,19 +66,18 @@ class RapidOrderBloc extends Bloc<RapidOrderEvent, RapidOrderState> {
final RapidOrderState currentState = state; final RapidOrderState currentState = state;
if (currentState is RapidOrderInitial) { if (currentState is RapidOrderInitial) {
final String message = currentState.message; final String message = currentState.message;
print('RapidOrder submit: message="$message"');
emit(const RapidOrderSubmitting()); emit(const RapidOrderSubmitting());
try { await handleError(
emit: emit,
action: () async {
await _createRapidOrderUseCase( await _createRapidOrderUseCase(
RapidOrderArguments(description: message), RapidOrderArguments(description: message),
); );
print('RapidOrder submit: success');
emit(const RapidOrderSuccess()); emit(const RapidOrderSuccess());
} catch (e) { },
print('RapidOrder submit: error=$e'); onError: (String errorKey) => RapidOrderFailure(errorKey),
emit(RapidOrderFailure(e.toString())); );
}
} }
} }
@@ -90,3 +91,4 @@ class RapidOrderBloc extends Bloc<RapidOrderEvent, RapidOrderState> {
} }
} }
} }

View File

@@ -1,5 +1,6 @@
import 'package:client_home/src/domain/repositories/home_repository_interface.dart'; import 'package:client_home/src/domain/repositories/home_repository_interface.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/usecases/get_dashboard_data_usecase.dart'; import '../../domain/usecases/get_dashboard_data_usecase.dart';
import '../../domain/usecases/get_recent_reorders_usecase.dart'; import '../../domain/usecases/get_recent_reorders_usecase.dart';
@@ -8,8 +9,8 @@ import 'client_home_event.dart';
import 'client_home_state.dart'; import 'client_home_state.dart';
/// BLoC responsible for managing the state and business logic of the client home dashboard. /// BLoC responsible for managing the state and business logic of the client home dashboard.
class ClientHomeBloc extends Bloc<ClientHomeEvent, ClientHomeState> { class ClientHomeBloc extends Bloc<ClientHomeEvent, ClientHomeState>
with BlocErrorHandler<ClientHomeState> {
ClientHomeBloc({ ClientHomeBloc({
required GetDashboardDataUseCase getDashboardDataUseCase, required GetDashboardDataUseCase getDashboardDataUseCase,
required GetRecentReordersUseCase getRecentReordersUseCase, required GetRecentReordersUseCase getRecentReordersUseCase,
@@ -35,7 +36,9 @@ class ClientHomeBloc extends Bloc<ClientHomeEvent, ClientHomeState> {
Emitter<ClientHomeState> emit, Emitter<ClientHomeState> emit,
) async { ) async {
emit(state.copyWith(status: ClientHomeStatus.loading)); emit(state.copyWith(status: ClientHomeStatus.loading));
try { await handleError(
emit: emit,
action: () async {
// Get session data // Get session data
final UserSessionData sessionData = _getUserSessionDataUseCase(); final UserSessionData sessionData = _getUserSessionDataUseCase();
@@ -52,15 +55,13 @@ class ClientHomeBloc extends Bloc<ClientHomeEvent, ClientHomeState> {
photoUrl: sessionData.photoUrl, photoUrl: sessionData.photoUrl,
), ),
); );
} catch (e) { },
emit( onError: (String errorKey) => state.copyWith(
state.copyWith(
status: ClientHomeStatus.error, status: ClientHomeStatus.error,
errorMessage: e.toString(), errorMessage: errorKey,
), ),
); );
} }
}
void _onEditModeToggled( void _onEditModeToggled(
ClientHomeEditModeToggled event, ClientHomeEditModeToggled event,
@@ -73,7 +74,8 @@ class ClientHomeBloc extends Bloc<ClientHomeEvent, ClientHomeState> {
ClientHomeWidgetVisibilityToggled event, ClientHomeWidgetVisibilityToggled event,
Emitter<ClientHomeState> emit, Emitter<ClientHomeState> emit,
) { ) {
final Map<String, bool> newVisibility = Map<String, bool>.from(state.widgetVisibility); final Map<String, bool> newVisibility =
Map<String, bool>.from(state.widgetVisibility);
newVisibility[event.widgetId] = !(newVisibility[event.widgetId] ?? true); newVisibility[event.widgetId] = !(newVisibility[event.widgetId] ?? true);
emit(state.copyWith(widgetVisibility: newVisibility)); emit(state.copyWith(widgetVisibility: newVisibility));
} }
@@ -119,3 +121,4 @@ class ClientHomeBloc extends Bloc<ClientHomeEvent, ClientHomeState> {
); );
} }
} }

View File

@@ -1,13 +1,14 @@
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import '../../domain/usecases/sign_out_usecase.dart'; import '../../domain/usecases/sign_out_usecase.dart';
part 'client_settings_event.dart'; part 'client_settings_event.dart';
part 'client_settings_state.dart'; part 'client_settings_state.dart';
/// BLoC to manage client settings and profile state. /// BLoC to manage client settings and profile state.
class ClientSettingsBloc class ClientSettingsBloc extends Bloc<ClientSettingsEvent, ClientSettingsState>
extends Bloc<ClientSettingsEvent, ClientSettingsState> { with BlocErrorHandler<ClientSettingsState> {
final SignOutUseCase _signOutUseCase; final SignOutUseCase _signOutUseCase;
ClientSettingsBloc({required SignOutUseCase signOutUseCase}) ClientSettingsBloc({required SignOutUseCase signOutUseCase})
@@ -21,11 +22,14 @@ class ClientSettingsBloc
Emitter<ClientSettingsState> emit, Emitter<ClientSettingsState> emit,
) async { ) async {
emit(const ClientSettingsLoading()); emit(const ClientSettingsLoading());
try { await handleError(
emit: emit,
action: () async {
await _signOutUseCase(); await _signOutUseCase();
emit(const ClientSettingsSignOutSuccess()); emit(const ClientSettingsSignOutSuccess());
} catch (e) { },
emit(ClientSettingsError(e.toString())); onError: (String errorKey) => ClientSettingsError(errorKey),
} );
} }
} }

View File

@@ -1,5 +1,6 @@
import 'package:intl/intl.dart'; import 'package:intl/intl.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/arguments/orders_day_arguments.dart'; import '../../domain/arguments/orders_day_arguments.dart';
import '../../domain/arguments/orders_range_arguments.dart'; import '../../domain/arguments/orders_range_arguments.dart';
@@ -10,12 +11,12 @@ import 'view_orders_state.dart';
/// Cubit for managing the state of the View Orders feature. /// Cubit for managing the state of the View Orders feature.
/// ///
/// This Cubit handles loading orders, date selection, and tab filtering. /// This Cubit handles loading orders, date selection, and tab filtering.
class ViewOrdersCubit extends Cubit<ViewOrdersState> { class ViewOrdersCubit extends Cubit<ViewOrdersState>
with BlocErrorHandler<ViewOrdersState> {
ViewOrdersCubit({ ViewOrdersCubit({
required GetOrdersUseCase getOrdersUseCase, required GetOrdersUseCase getOrdersUseCase,
required GetAcceptedApplicationsForDayUseCase getAcceptedAppsUseCase, required GetAcceptedApplicationsForDayUseCase getAcceptedAppsUseCase,
}) }) : _getOrdersUseCase = getOrdersUseCase,
: _getOrdersUseCase = getOrdersUseCase,
_getAcceptedAppsUseCase = getAcceptedAppsUseCase, _getAcceptedAppsUseCase = getAcceptedAppsUseCase,
super(ViewOrdersState(selectedDate: DateTime.now())) { super(ViewOrdersState(selectedDate: DateTime.now())) {
_init(); _init();
@@ -36,17 +37,23 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
}) async { }) async {
final int requestId = ++_requestId; final int requestId = ++_requestId;
emit(state.copyWith(status: ViewOrdersStatus.loading)); emit(state.copyWith(status: ViewOrdersStatus.loading));
try {
await handleError(
emit: (ViewOrdersState s) {
if (requestId == _requestId) emit(s);
},
action: () async {
final List<OrderItem> orders = await _getOrdersUseCase( final List<OrderItem> orders = await _getOrdersUseCase(
OrdersRangeArguments(start: rangeStart, end: rangeEnd), OrdersRangeArguments(start: rangeStart, end: rangeEnd),
); );
final Map<String, List<Map<String, dynamic>>> apps = await _getAcceptedAppsUseCase( final Map<String, List<Map<String, dynamic>>> apps =
OrdersDayArguments(day: dayForApps), await _getAcceptedAppsUseCase(OrdersDayArguments(day: dayForApps));
);
final List<OrderItem> updatedOrders = _applyApplications(orders, apps);
if (requestId != _requestId) { if (requestId != _requestId) {
return; return;
} }
final List<OrderItem> updatedOrders = _applyApplications(orders, apps);
emit( emit(
state.copyWith( state.copyWith(
status: ViewOrdersStatus.success, status: ViewOrdersStatus.success,
@@ -54,12 +61,9 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
), ),
); );
_updateDerivedState(); _updateDerivedState();
} catch (_) { },
if (requestId != _requestId) { onError: (String _) => state.copyWith(status: ViewOrdersStatus.failure),
return; );
}
emit(state.copyWith(status: ViewOrdersStatus.failure));
}
} }
void selectDate(DateTime date) { void selectDate(DateTime date) {
@@ -78,7 +82,9 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
final DateTime? selectedDate = state.selectedDate; final DateTime? selectedDate = state.selectedDate;
final DateTime updatedSelectedDate = final DateTime updatedSelectedDate =
selectedDate != null && selectedDate != null &&
calendarDays.any((DateTime day) => _isSameDay(day, selectedDate)) calendarDays.any(
(DateTime day) => _isSameDay(day, selectedDate),
)
? selectedDate ? selectedDate
: calendarDays.first; : calendarDays.first;
emit( emit(
@@ -135,17 +141,21 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
} }
Future<void> _refreshAcceptedApplications(DateTime day) async { Future<void> _refreshAcceptedApplications(DateTime day) async {
try { await handleErrorWithResult(
final Map<String, List<Map<String, dynamic>>> apps = await _getAcceptedAppsUseCase( action: () async {
OrdersDayArguments(day: day), final Map<String, List<Map<String, dynamic>>> apps =
await _getAcceptedAppsUseCase(OrdersDayArguments(day: day));
final List<OrderItem> updatedOrders = _applyApplications(
state.orders,
apps,
); );
final List<OrderItem> updatedOrders =
_applyApplications(state.orders, apps);
emit(state.copyWith(orders: updatedOrders)); emit(state.copyWith(orders: updatedOrders));
_updateDerivedState(); _updateDerivedState();
} catch (_) { },
// Keep existing data on failure. onError: (_) {
} // Keep existing data on failure, just log error via handleErrorWithResult
},
);
} }
List<OrderItem> _applyApplications( List<OrderItem> _applyApplications(
@@ -153,7 +163,8 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
Map<String, List<Map<String, dynamic>>> apps, Map<String, List<Map<String, dynamic>>> apps,
) { ) {
return orders.map((OrderItem order) { return orders.map((OrderItem order) {
final List<Map<String, dynamic>> confirmed = apps[order.id] ?? const <Map<String, dynamic>>[]; final List<Map<String, dynamic>> confirmed =
apps[order.id] ?? const <Map<String, dynamic>>[];
if (confirmed.isEmpty) { if (confirmed.isEmpty) {
return order; return order;
} }
@@ -209,7 +220,8 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
).format(state.selectedDate!); ).format(state.selectedDate!);
// Filter by date // Filter by date
final List<OrderItem> ordersOnDate = state.orders final List<OrderItem> ordersOnDate =
state.orders
.where((OrderItem s) => s.date == selectedDateStr) .where((OrderItem s) => s.date == selectedDateStr)
.toList(); .toList();
@@ -219,12 +231,18 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
); );
if (state.filterTab == 'all') { if (state.filterTab == 'all') {
final List<OrderItem> filtered = ordersOnDate final List<OrderItem> filtered =
ordersOnDate
.where( .where(
(OrderItem s) => (OrderItem s) =>
// TODO(orders): move PENDING to its own tab once available. // TODO(orders): move PENDING to its own tab once available.
<String>['OPEN', 'FILLED', 'CONFIRMED', 'PENDING', 'ASSIGNED'] <String>[
.contains(s.status), 'OPEN',
'FILLED',
'CONFIRMED',
'PENDING',
'ASSIGNED',
].contains(s.status),
) )
.toList(); .toList();
print( print(
@@ -232,7 +250,8 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
); );
return filtered; return filtered;
} else if (state.filterTab == 'active') { } else if (state.filterTab == 'active') {
final List<OrderItem> filtered = ordersOnDate final List<OrderItem> filtered =
ordersOnDate
.where((OrderItem s) => s.status == 'IN_PROGRESS') .where((OrderItem s) => s.status == 'IN_PROGRESS')
.toList(); .toList();
print( print(
@@ -240,7 +259,8 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
); );
return filtered; return filtered;
} else if (state.filterTab == 'completed') { } else if (state.filterTab == 'completed') {
final List<OrderItem> filtered = ordersOnDate final List<OrderItem> filtered =
ordersOnDate
.where((OrderItem s) => s.status == 'COMPLETED') .where((OrderItem s) => s.status == 'COMPLETED')
.toList(); .toList();
print( print(
@@ -260,11 +280,17 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
if (category == 'active') { if (category == 'active') {
return state.orders return state.orders
.where((OrderItem s) => s.date == selectedDateStr && s.status == 'IN_PROGRESS') .where(
(OrderItem s) =>
s.date == selectedDateStr && s.status == 'IN_PROGRESS',
)
.length; .length;
} else if (category == 'completed') { } else if (category == 'completed') {
return state.orders return state.orders
.where((OrderItem s) => s.date == selectedDateStr && s.status == 'COMPLETED') .where(
(OrderItem s) =>
s.date == selectedDateStr && s.status == 'COMPLETED',
)
.length; .length;
} }
return 0; return 0;
@@ -281,9 +307,15 @@ class ViewOrdersCubit extends Cubit<ViewOrdersState> {
.where( .where(
(OrderItem s) => (OrderItem s) =>
s.date == selectedDateStr && s.date == selectedDateStr &&
<String>['OPEN', 'FILLED', 'CONFIRMED', 'PENDING', 'ASSIGNED'] <String>[
.contains(s.status), 'OPEN',
'FILLED',
'CONFIRMED',
'PENDING',
'ASSIGNED',
].contains(s.status),
) )
.length; .length;
} }
} }

View File

@@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter_modular/flutter_modular.dart'; import 'package:flutter_modular/flutter_modular.dart';
import 'package:bloc/bloc.dart'; import 'package:bloc/bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/arguments/sign_in_with_phone_arguments.dart'; import '../../domain/arguments/sign_in_with_phone_arguments.dart';
import '../../domain/arguments/verify_otp_arguments.dart'; import '../../domain/arguments/verify_otp_arguments.dart';
@@ -10,7 +11,9 @@ import 'auth_event.dart';
import 'auth_state.dart'; import 'auth_state.dart';
/// BLoC responsible for handling authentication logic. /// BLoC responsible for handling authentication logic.
class AuthBloc extends Bloc<AuthEvent, AuthState> implements Disposable { class AuthBloc extends Bloc<AuthEvent, AuthState>
with BlocErrorHandler<AuthState>
implements Disposable {
/// The use case for signing in with a phone number. /// The use case for signing in with a phone number.
final SignInWithPhoneUseCase _signInUseCase; final SignInWithPhoneUseCase _signInUseCase;
@@ -84,7 +87,8 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> implements Disposable {
status: AuthStatus.error, status: AuthStatus.error,
mode: event.mode, mode: event.mode,
phoneNumber: event.phoneNumber ?? state.phoneNumber, phoneNumber: event.phoneNumber ?? state.phoneNumber,
errorMessage: 'Please wait ${remaining}s before requesting a new code.', errorMessage:
'Please wait ${remaining}s before requesting a new code.',
cooldownSecondsRemaining: remaining, cooldownSecondsRemaining: remaining,
), ),
); );
@@ -105,7 +109,10 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> implements Disposable {
cooldownSecondsRemaining: 0, cooldownSecondsRemaining: 0,
), ),
); );
try {
await handleError(
emit: emit,
action: () async {
final String? verificationId = await _signInUseCase( final String? verificationId = await _signInUseCase(
SignInWithPhoneArguments( SignInWithPhoneArguments(
phoneNumber: event.phoneNumber ?? state.phoneNumber, phoneNumber: event.phoneNumber ?? state.phoneNumber,
@@ -119,25 +126,23 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> implements Disposable {
cooldownSecondsRemaining: 0, cooldownSecondsRemaining: 0,
), ),
); );
} catch (e) { },
if (token != _requestToken) return; onError: (String errorKey) {
emit( if (token != _requestToken) return state;
state.copyWith( return state.copyWith(
status: AuthStatus.error, status: AuthStatus.error,
errorMessage: e.toString(), errorMessage: errorKey,
cooldownSecondsRemaining: 0, cooldownSecondsRemaining: 0,
),
); );
} },
);
} }
void _onCooldownTicked( void _onCooldownTicked(
AuthCooldownTicked event, AuthCooldownTicked event,
Emitter<AuthState> emit, Emitter<AuthState> emit,
) { ) {
print('Auth cooldown tick: ${event.secondsRemaining}');
if (event.secondsRemaining <= 0) { if (event.secondsRemaining <= 0) {
print('Auth cooldown finished: clearing message');
_cancelCooldownTimer(); _cancelCooldownTimer();
_cooldownUntil = null; _cooldownUntil = null;
emit( emit(
@@ -166,11 +171,9 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> implements Disposable {
add(AuthCooldownTicked(remaining)); add(AuthCooldownTicked(remaining));
_cooldownTimer = Timer.periodic(const Duration(seconds: 1), (Timer timer) { _cooldownTimer = Timer.periodic(const Duration(seconds: 1), (Timer timer) {
remaining -= 1; remaining -= 1;
print('Auth cooldown timer: remaining=$remaining');
if (remaining <= 0) { if (remaining <= 0) {
timer.cancel(); timer.cancel();
_cooldownTimer = null; _cooldownTimer = null;
print('Auth cooldown timer: reached 0, emitting tick');
add(const AuthCooldownTicked(0)); add(const AuthCooldownTicked(0));
return; return;
} }
@@ -183,14 +186,15 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> implements Disposable {
_cooldownTimer = null; _cooldownTimer = null;
} }
/// Handles OTP submission and verification. /// Handles OTP submission and verification.
Future<void> _onOtpSubmitted( Future<void> _onOtpSubmitted(
AuthOtpSubmitted event, AuthOtpSubmitted event,
Emitter<AuthState> emit, Emitter<AuthState> emit,
) async { ) async {
emit(state.copyWith(status: AuthStatus.loading)); emit(state.copyWith(status: AuthStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final User? user = await _verifyOtpUseCase( final User? user = await _verifyOtpUseCase(
VerifyOtpArguments( VerifyOtpArguments(
verificationId: event.verificationId, verificationId: event.verificationId,
@@ -199,12 +203,13 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> implements Disposable {
), ),
); );
emit(state.copyWith(status: AuthStatus.authenticated, user: user)); emit(state.copyWith(status: AuthStatus.authenticated, user: user));
} catch (e) { },
emit( onError: (String errorKey) => state.copyWith(
state.copyWith(status: AuthStatus.error, errorMessage: e.toString()), status: AuthStatus.error,
errorMessage: errorKey,
),
); );
} }
}
/// Disposes the BLoC resources. /// Disposes the BLoC resources.
@override @override
@@ -213,3 +218,4 @@ class AuthBloc extends Bloc<AuthEvent, AuthState> implements Disposable {
close(); close();
} }
} }

View File

@@ -1,4 +1,5 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import '../../../domain/usecases/submit_profile_setup_usecase.dart'; import '../../../domain/usecases/submit_profile_setup_usecase.dart';
import '../../../domain/usecases/search_cities_usecase.dart'; import '../../../domain/usecases/search_cities_usecase.dart';
@@ -10,7 +11,8 @@ export 'profile_setup_event.dart';
export 'profile_setup_state.dart'; export 'profile_setup_state.dart';
/// BLoC responsible for managing the profile setup state and logic. /// BLoC responsible for managing the profile setup state and logic.
class ProfileSetupBloc extends Bloc<ProfileSetupEvent, ProfileSetupState> { class ProfileSetupBloc extends Bloc<ProfileSetupEvent, ProfileSetupState>
with BlocErrorHandler<ProfileSetupState> {
ProfileSetupBloc({ ProfileSetupBloc({
required SubmitProfileSetup submitProfileSetup, required SubmitProfileSetup submitProfileSetup,
required SearchCitiesUseCase searchCities, required SearchCitiesUseCase searchCities,
@@ -86,7 +88,9 @@ class ProfileSetupBloc extends Bloc<ProfileSetupEvent, ProfileSetupState> {
) async { ) async {
emit(state.copyWith(status: ProfileSetupStatus.loading)); emit(state.copyWith(status: ProfileSetupStatus.loading));
try { await handleError(
emit: emit,
action: () async {
await _submitProfileSetup( await _submitProfileSetup(
fullName: state.fullName, fullName: state.fullName,
bio: state.bio.isEmpty ? null : state.bio, bio: state.bio.isEmpty ? null : state.bio,
@@ -97,15 +101,13 @@ class ProfileSetupBloc extends Bloc<ProfileSetupEvent, ProfileSetupState> {
); );
emit(state.copyWith(status: ProfileSetupStatus.success)); emit(state.copyWith(status: ProfileSetupStatus.success));
} catch (e) { },
emit( onError: (String errorKey) => state.copyWith(
state.copyWith(
status: ProfileSetupStatus.failure, status: ProfileSetupStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
), ),
); );
} }
}
Future<void> _onLocationQueryChanged( Future<void> _onLocationQueryChanged(
ProfileSetupLocationQueryChanged event, ProfileSetupLocationQueryChanged event,
@@ -116,6 +118,8 @@ class ProfileSetupBloc extends Bloc<ProfileSetupEvent, ProfileSetupState> {
return; return;
} }
// For search, we might want to handle errors silently or distinctively
// Using simple try-catch here as it's a search-as-you-type feature where error dialogs are intrusive
try { try {
final results = await _searchCities(event.query); final results = await _searchCities(event.query);
emit(state.copyWith(locationSuggestions: results)); emit(state.copyWith(locationSuggestions: results));
@@ -132,3 +136,4 @@ class ProfileSetupBloc extends Bloc<ProfileSetupEvent, ProfileSetupState> {
emit(state.copyWith(locationSuggestions: [])); emit(state.copyWith(locationSuggestions: []));
} }
} }

View File

@@ -2,10 +2,12 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import '../../domain/usecases/apply_quick_set_usecase.dart'; import '../../domain/usecases/apply_quick_set_usecase.dart';
import '../../domain/usecases/get_weekly_availability_usecase.dart'; import '../../domain/usecases/get_weekly_availability_usecase.dart';
import '../../domain/usecases/update_day_availability_usecase.dart'; import '../../domain/usecases/update_day_availability_usecase.dart';
import 'package:krow_core/core.dart';
import 'availability_event.dart'; import 'availability_event.dart';
import 'availability_state.dart'; import 'availability_state.dart';
class AvailabilityBloc extends Bloc<AvailabilityEvent, AvailabilityState> { class AvailabilityBloc extends Bloc<AvailabilityEvent, AvailabilityState>
with BlocErrorHandler<AvailabilityState> {
final GetWeeklyAvailabilityUseCase getWeeklyAvailability; final GetWeeklyAvailabilityUseCase getWeeklyAvailability;
final UpdateDayAvailabilityUseCase updateDayAvailability; final UpdateDayAvailabilityUseCase updateDayAvailability;
final ApplyQuickSetUseCase applyQuickSet; final ApplyQuickSetUseCase applyQuickSet;
@@ -28,27 +30,34 @@ class AvailabilityBloc extends Bloc<AvailabilityEvent, AvailabilityState> {
Emitter<AvailabilityState> emit, Emitter<AvailabilityState> emit,
) async { ) async {
emit(AvailabilityLoading()); emit(AvailabilityLoading());
try { await handleError(
emit: emit,
action: () async {
final days = await getWeeklyAvailability( final days = await getWeeklyAvailability(
GetWeeklyAvailabilityParams(event.weekStart)); GetWeeklyAvailabilityParams(event.weekStart),
emit(AvailabilityLoaded( );
emit(
AvailabilityLoaded(
days: days, days: days,
currentWeekStart: event.weekStart, currentWeekStart: event.weekStart,
selectedDate: event.preselectedDate ?? selectedDate: event.preselectedDate ??
(days.isNotEmpty ? days.first.date : DateTime.now()), (days.isNotEmpty ? days.first.date : DateTime.now()),
)); ),
} catch (e) { );
emit(AvailabilityError(e.toString())); },
} onError: (String errorKey) => AvailabilityError(errorKey),
);
} }
void _onSelectDate(SelectDate event, Emitter<AvailabilityState> emit) { void _onSelectDate(SelectDate event, Emitter<AvailabilityState> emit) {
if (state is AvailabilityLoaded) { if (state is AvailabilityLoaded) {
// Clear success message on navigation // Clear success message on navigation
emit((state as AvailabilityLoaded).copyWith( emit(
(state as AvailabilityLoaded).copyWith(
selectedDate: event.date, selectedDate: event.date,
clearSuccessMessage: true, clearSuccessMessage: true,
)); ),
);
} }
} }
@@ -62,10 +71,13 @@ class AvailabilityBloc extends Bloc<AvailabilityEvent, AvailabilityState> {
// Clear message // Clear message
emit(currentState.copyWith(clearSuccessMessage: true)); emit(currentState.copyWith(clearSuccessMessage: true));
final newWeekStart = currentState.currentWeekStart final newWeekStart = currentState.currentWeekStart.add(
.add(Duration(days: event.direction * 7)); Duration(days: event.direction * 7),
);
final diff = currentState.selectedDate.difference(currentState.currentWeekStart).inDays; final diff = currentState.selectedDate
.difference(currentState.currentWeekStart)
.inDays;
final newSelectedDate = newWeekStart.add(Duration(days: diff)); final newSelectedDate = newWeekStart.add(Duration(days: diff));
add(LoadAvailability(newWeekStart, preselectedDate: newSelectedDate)); add(LoadAvailability(newWeekStart, preselectedDate: newSelectedDate));
@@ -90,18 +102,29 @@ class AvailabilityBloc extends Bloc<AvailabilityEvent, AvailabilityState> {
clearSuccessMessage: true, clearSuccessMessage: true,
)); ));
try { await handleError(
emit: emit,
action: () async {
await updateDayAvailability(UpdateDayAvailabilityParams(newDay)); await updateDayAvailability(UpdateDayAvailabilityParams(newDay));
// Success feedback // Success feedback
if (state is AvailabilityLoaded) { if (state is AvailabilityLoaded) {
emit((state as AvailabilityLoaded).copyWith(successMessage: 'Availability updated')); emit(
(state as AvailabilityLoaded).copyWith(
successMessage: 'Availability updated',
),
);
} }
} catch (e) { },
onError: (String errorKey) {
// Revert // Revert
if (state is AvailabilityLoaded) { if (state is AvailabilityLoaded) {
emit((state as AvailabilityLoaded).copyWith(days: currentState.days)); return (state as AvailabilityLoaded).copyWith(
} days: currentState.days,
);
} }
return AvailabilityError(errorKey);
},
);
} }
} }
@@ -131,18 +154,29 @@ class AvailabilityBloc extends Bloc<AvailabilityEvent, AvailabilityState> {
clearSuccessMessage: true, clearSuccessMessage: true,
)); ));
try { await handleError(
emit: emit,
action: () async {
await updateDayAvailability(UpdateDayAvailabilityParams(newDay)); await updateDayAvailability(UpdateDayAvailabilityParams(newDay));
// Success feedback // Success feedback
if (state is AvailabilityLoaded) { if (state is AvailabilityLoaded) {
emit((state as AvailabilityLoaded).copyWith(successMessage: 'Availability updated')); emit(
(state as AvailabilityLoaded).copyWith(
successMessage: 'Availability updated',
),
);
} }
} catch (e) { },
onError: (String errorKey) {
// Revert // Revert
if (state is AvailabilityLoaded) { if (state is AvailabilityLoaded) {
emit((state as AvailabilityLoaded).copyWith(days: currentState.days)); return (state as AvailabilityLoaded).copyWith(
} days: currentState.days,
);
} }
return AvailabilityError(errorKey);
},
);
} }
} }
@@ -153,27 +187,38 @@ class AvailabilityBloc extends Bloc<AvailabilityEvent, AvailabilityState> {
if (state is AvailabilityLoaded) { if (state is AvailabilityLoaded) {
final currentState = state as AvailabilityLoaded; final currentState = state as AvailabilityLoaded;
emit(currentState.copyWith( emit(
currentState.copyWith(
isActionInProgress: true, isActionInProgress: true,
clearSuccessMessage: true, clearSuccessMessage: true,
)); ),
);
try { await handleError(
emit: emit,
action: () async {
final newDays = await applyQuickSet( final newDays = await applyQuickSet(
ApplyQuickSetParams(currentState.currentWeekStart, event.type)); ApplyQuickSetParams(currentState.currentWeekStart, event.type),
);
emit(currentState.copyWith( emit(
currentState.copyWith(
days: newDays, days: newDays,
isActionInProgress: false, isActionInProgress: false,
successMessage: 'Availability updated', successMessage: 'Availability updated',
)); ),
} catch (e) { );
emit(currentState.copyWith( },
onError: (String errorKey) {
if (state is AvailabilityLoaded) {
return (state as AvailabilityLoaded).copyWith(
isActionInProgress: false, isActionInProgress: false,
// Could set error message here if we had a field for it, or emit AvailabilityError );
// But emitting AvailabilityError would replace the whole screen.
));
} }
return AvailabilityError(errorKey);
},
);
} }
} }
} }

View File

@@ -1,5 +1,6 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:geolocator/geolocator.dart'; import 'package:geolocator/geolocator.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/usecases/get_todays_shift_usecase.dart'; import '../../domain/usecases/get_todays_shift_usecase.dart';
import '../../domain/usecases/get_attendance_status_usecase.dart'; import '../../domain/usecases/get_attendance_status_usecase.dart';
@@ -10,8 +11,8 @@ import '../../domain/arguments/clock_out_arguments.dart';
import 'clock_in_event.dart'; import 'clock_in_event.dart';
import 'clock_in_state.dart'; import 'clock_in_state.dart';
class ClockInBloc extends Bloc<ClockInEvent, ClockInState> { class ClockInBloc extends Bloc<ClockInEvent, ClockInState>
with BlocErrorHandler<ClockInState> {
ClockInBloc({ ClockInBloc({
required GetTodaysShiftUseCase getTodaysShift, required GetTodaysShiftUseCase getTodaysShift,
required GetAttendanceStatusUseCase getAttendanceStatus, required GetAttendanceStatusUseCase getAttendanceStatus,
@@ -47,12 +48,12 @@ class ClockInBloc extends Bloc<ClockInEvent, ClockInState> {
Emitter<ClockInState> emit, Emitter<ClockInState> emit,
) async { ) async {
emit(state.copyWith(status: ClockInStatus.loading)); emit(state.copyWith(status: ClockInStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final List<Shift> shifts = await _getTodaysShift(); final List<Shift> shifts = await _getTodaysShift();
final AttendanceStatus status = await _getAttendanceStatus(); final AttendanceStatus status = await _getAttendanceStatus();
// Check permissions silently on load? Maybe better to wait for user interaction or specific event
// However, if shift exists, we might want to check permission state
Shift? selectedShift; Shift? selectedShift;
if (shifts.isNotEmpty) { if (shifts.isNotEmpty) {
if (status.activeShiftId != null) { if (status.activeShiftId != null) {
@@ -74,43 +75,52 @@ class ClockInBloc extends Bloc<ClockInEvent, ClockInState> {
if (selectedShift != null && !status.isCheckedIn) { if (selectedShift != null && !status.isCheckedIn) {
add(RequestLocationPermission()); add(RequestLocationPermission());
} }
},
} catch (e) { onError: (String errorKey) => state.copyWith(
emit(state.copyWith(
status: ClockInStatus.failure, status: ClockInStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
Future<void> _onRequestLocationPermission( Future<void> _onRequestLocationPermission(
RequestLocationPermission event, RequestLocationPermission event,
Emitter<ClockInState> emit, Emitter<ClockInState> emit,
) async { ) async {
try { await handleError(
emit: emit,
action: () async {
LocationPermission permission = await Geolocator.checkPermission(); LocationPermission permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) { if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission(); permission = await Geolocator.requestPermission();
} }
final bool hasConsent = permission == LocationPermission.always || permission == LocationPermission.whileInUse; final bool hasConsent =
permission == LocationPermission.always ||
permission == LocationPermission.whileInUse;
emit(state.copyWith(hasLocationConsent: hasConsent)); emit(state.copyWith(hasLocationConsent: hasConsent));
if (hasConsent) { if (hasConsent) {
_startLocationUpdates(); await _startLocationUpdates();
}
} catch (e) {
emit(state.copyWith(errorMessage: "Location error: $e"));
} }
},
onError: (String errorKey) => state.copyWith(
errorMessage: errorKey,
),
);
} }
Future<void> _startLocationUpdates() async { Future<void> _startLocationUpdates() async {
// Note: handleErrorWithResult could be used here too if we want centralized logging/conversion
try { try {
final Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high); final Position position = await Geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.high,
);
double distance = 0; double distance = 0;
bool isVerified = false; // Require location match by default if shift has location bool isVerified =
false; // Require location match by default if shift has location
if (state.selectedShift != null && if (state.selectedShift != null &&
state.selectedShift!.latitude != null && state.selectedShift!.latitude != null &&
@@ -123,16 +133,20 @@ class ClockInBloc extends Bloc<ClockInEvent, ClockInState> {
); );
isVerified = distance <= allowedRadiusMeters; isVerified = distance <= allowedRadiusMeters;
} else { } else {
// If no shift location, assume verified or don't restrict?
// For strict clock-in, maybe false? but let's default to verified to avoid blocking if data missing
isVerified = true; isVerified = true;
} }
if (!isClosed) { if (!isClosed) {
add(LocationUpdated(position: position, distance: distance, isVerified: isVerified)); add(
LocationUpdated(
position: position,
distance: distance,
isVerified: isVerified,
),
);
} }
} catch (e) { } catch (_) {
// Handle error silently or via state // Geolocator errors usually handled via onRequestLocationPermission
} }
} }
@@ -144,7 +158,8 @@ class ClockInBloc extends Bloc<ClockInEvent, ClockInState> {
currentLocation: event.position, currentLocation: event.position,
distanceFromVenue: event.distance, distanceFromVenue: event.distance,
isLocationVerified: event.isVerified, isLocationVerified: event.isVerified,
etaMinutes: (event.distance / 80).round(), // Rough estimate: 80m/min walking speed etaMinutes:
(event.distance / 80).round(), // Rough estimate: 80m/min walking speed
)); ));
} }
@@ -186,15 +201,10 @@ class ClockInBloc extends Bloc<ClockInEvent, ClockInState> {
CheckInRequested event, CheckInRequested event,
Emitter<ClockInState> emit, Emitter<ClockInState> emit,
) async { ) async {
// Only verify location if not using NFC (or depending on requirements) - enforcing for swipe
if (state.checkInMode == 'swipe' && !state.isLocationVerified) {
// Allow for now since coordinates are hardcoded and might not match user location
// emit(state.copyWith(errorMessage: "You must be at the location to clock in."));
// return;
}
emit(state.copyWith(status: ClockInStatus.actionInProgress)); emit(state.copyWith(status: ClockInStatus.actionInProgress));
try { await handleError(
emit: emit,
action: () async {
final AttendanceStatus newStatus = await _clockIn( final AttendanceStatus newStatus = await _clockIn(
ClockInArguments(shiftId: event.shiftId, notes: event.notes), ClockInArguments(shiftId: event.shiftId, notes: event.notes),
); );
@@ -202,12 +212,12 @@ class ClockInBloc extends Bloc<ClockInEvent, ClockInState> {
status: ClockInStatus.success, status: ClockInStatus.success,
attendance: newStatus, attendance: newStatus,
)); ));
} catch (e) { },
emit(state.copyWith( onError: (String errorKey) => state.copyWith(
status: ClockInStatus.failure, status: ClockInStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
Future<void> _onCheckOut( Future<void> _onCheckOut(
@@ -215,11 +225,13 @@ class ClockInBloc extends Bloc<ClockInEvent, ClockInState> {
Emitter<ClockInState> emit, Emitter<ClockInState> emit,
) async { ) async {
emit(state.copyWith(status: ClockInStatus.actionInProgress)); emit(state.copyWith(status: ClockInStatus.actionInProgress));
try { await handleError(
emit: emit,
action: () async {
final AttendanceStatus newStatus = await _clockOut( final AttendanceStatus newStatus = await _clockOut(
ClockOutArguments( ClockOutArguments(
notes: event.notes, notes: event.notes,
breakTimeMinutes: 0, // Should be passed from event if supported breakTimeMinutes: 0,
applicationId: state.attendance.activeApplicationId, applicationId: state.attendance.activeApplicationId,
), ),
); );
@@ -227,11 +239,11 @@ class ClockInBloc extends Bloc<ClockInEvent, ClockInState> {
status: ClockInStatus.success, status: ClockInStatus.success,
attendance: newStatus, attendance: newStatus,
)); ));
} catch (e) { },
emit(state.copyWith( onError: (String errorKey) => state.copyWith(
status: ClockInStatus.failure, status: ClockInStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
} }

View File

@@ -86,7 +86,7 @@ class ClockInCubit extends Cubit<ClockInState> { // 500m radius
return; return;
} }
_getCurrentLocation(); await _getCurrentLocation();
} catch (e) { } catch (e) {
emit(state.copyWith(isLoading: false, error: e.toString())); emit(state.copyWith(isLoading: false, error: e.toString()));
} }

View File

@@ -1,5 +1,6 @@
import 'package:bloc/bloc.dart'; import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import 'package:staff_home/src/domain/usecases/get_home_shifts.dart'; import 'package:staff_home/src/domain/usecases/get_home_shifts.dart';
@@ -8,7 +9,7 @@ import 'package:staff_home/src/domain/repositories/home_repository.dart';
part 'home_state.dart'; part 'home_state.dart';
/// Simple Cubit to manage home page state (shifts + loading/error). /// Simple Cubit to manage home page state (shifts + loading/error).
class HomeCubit extends Cubit<HomeState> { class HomeCubit extends Cubit<HomeState> with BlocErrorHandler<HomeState> {
final GetHomeShifts _getHomeShifts; final GetHomeShifts _getHomeShifts;
final HomeRepository _repository; final HomeRepository _repository;
@@ -20,7 +21,9 @@ class HomeCubit extends Cubit<HomeState> {
Future<void> loadShifts() async { Future<void> loadShifts() async {
if (isClosed) return; if (isClosed) return;
emit(state.copyWith(status: HomeStatus.loading)); emit(state.copyWith(status: HomeStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final result = await _getHomeShifts.call(); final result = await _getHomeShifts.call();
final name = await _repository.getStaffName(); final name = await _repository.getStaffName();
if (isClosed) return; if (isClosed) return;
@@ -35,13 +38,14 @@ class HomeCubit extends Cubit<HomeState> {
isProfileComplete: false, isProfileComplete: false,
), ),
); );
} catch (e) { },
if (isClosed) return; onError: (String errorKey) {
emit( if (isClosed) return state; // Avoid state emission if closed, though emit handles it gracefully usually
state.copyWith(status: HomeStatus.error, errorMessage: e.toString()), return state.copyWith(status: HomeStatus.error, errorMessage: errorKey);
},
); );
} }
}
void toggleAutoMatch(bool enabled) { void toggleAutoMatch(bool enabled) {
emit(state.copyWith(autoMatchEnabled: enabled)); emit(state.copyWith(autoMatchEnabled: enabled));

View File

@@ -190,7 +190,7 @@ class RecommendedShiftCard extends StatelessWidget {
const SizedBox(width: 4), const SizedBox(width: 4),
Expanded( Expanded(
child: Text( child: Text(
shift.locationAddress ?? shift.location, shift.locationAddress,
style: const TextStyle( style: const TextStyle(
fontSize: 12, fontSize: 12,
color: UiColors.mutedForeground, color: UiColors.mutedForeground,

View File

@@ -1,4 +1,5 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../../domain/arguments/get_payment_history_arguments.dart'; import '../../../domain/arguments/get_payment_history_arguments.dart';
import '../../../domain/usecases/get_payment_history_usecase.dart'; import '../../../domain/usecases/get_payment_history_usecase.dart';
@@ -6,8 +7,8 @@ import '../../../domain/usecases/get_payment_summary_usecase.dart';
import 'payments_event.dart'; import 'payments_event.dart';
import 'payments_state.dart'; import 'payments_state.dart';
class PaymentsBloc extends Bloc<PaymentsEvent, PaymentsState> { class PaymentsBloc extends Bloc<PaymentsEvent, PaymentsState>
with BlocErrorHandler<PaymentsState> {
PaymentsBloc({ PaymentsBloc({
required this.getPaymentSummary, required this.getPaymentSummary,
required this.getPaymentHistory, required this.getPaymentHistory,
@@ -23,20 +24,24 @@ class PaymentsBloc extends Bloc<PaymentsEvent, PaymentsState> {
Emitter<PaymentsState> emit, Emitter<PaymentsState> emit,
) async { ) async {
emit(PaymentsLoading()); emit(PaymentsLoading());
try { await handleError(
emit: emit,
action: () async {
final PaymentSummary currentSummary = await getPaymentSummary(); final PaymentSummary currentSummary = await getPaymentSummary();
final List<StaffPayment> history = await getPaymentHistory( final List<StaffPayment> history = await getPaymentHistory(
const GetPaymentHistoryArguments('week'), const GetPaymentHistoryArguments('week'),
); );
emit(PaymentsLoaded( emit(
PaymentsLoaded(
summary: currentSummary, summary: currentSummary,
history: history, history: history,
activePeriod: 'week', activePeriod: 'week',
)); ),
} catch (e) { );
emit(PaymentsError(e.toString())); },
} onError: (String errorKey) => PaymentsError(errorKey),
);
} }
Future<void> _onChangePeriod( Future<void> _onChangePeriod(
@@ -45,17 +50,22 @@ class PaymentsBloc extends Bloc<PaymentsEvent, PaymentsState> {
) async { ) async {
final PaymentsState currentState = state; final PaymentsState currentState = state;
if (currentState is PaymentsLoaded) { if (currentState is PaymentsLoaded) {
try { await handleError(
emit: emit,
action: () async {
final List<StaffPayment> newHistory = await getPaymentHistory( final List<StaffPayment> newHistory = await getPaymentHistory(
GetPaymentHistoryArguments(event.period), GetPaymentHistoryArguments(event.period),
); );
emit(currentState.copyWith( emit(
currentState.copyWith(
history: newHistory, history: newHistory,
activePeriod: event.period, activePeriod: event.period,
)); ),
} catch (e) { );
emit(PaymentsError(e.toString())); },
} onError: (String errorKey) => PaymentsError(errorKey),
);
} }
} }
} }

View File

@@ -1,4 +1,5 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import '../../domain/usecases/get_profile_usecase.dart'; import '../../domain/usecases/get_profile_usecase.dart';
import '../../domain/usecases/sign_out_usecase.dart'; import '../../domain/usecases/sign_out_usecase.dart';
import 'profile_state.dart'; import 'profile_state.dart';
@@ -6,15 +7,14 @@ import 'profile_state.dart';
/// Cubit for managing the Profile feature state. /// Cubit for managing the Profile feature state.
/// ///
/// Handles loading profile data and user sign-out actions. /// Handles loading profile data and user sign-out actions.
class ProfileCubit extends Cubit<ProfileState> { class ProfileCubit extends Cubit<ProfileState>
with BlocErrorHandler<ProfileState> {
final GetProfileUseCase _getProfileUseCase; final GetProfileUseCase _getProfileUseCase;
final SignOutUseCase _signOutUseCase; final SignOutUseCase _signOutUseCase;
/// Creates a [ProfileCubit] with the required use cases. /// Creates a [ProfileCubit] with the required use cases.
ProfileCubit( ProfileCubit(this._getProfileUseCase, this._signOutUseCase)
this._getProfileUseCase, : super(const ProfileState());
this._signOutUseCase,
) : super(const ProfileState());
/// Loads the staff member's profile. /// Loads the staff member's profile.
/// ///
@@ -24,18 +24,16 @@ class ProfileCubit extends Cubit<ProfileState> {
Future<void> loadProfile() async { Future<void> loadProfile() async {
emit(state.copyWith(status: ProfileStatus.loading)); emit(state.copyWith(status: ProfileStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final profile = await _getProfileUseCase(); final profile = await _getProfileUseCase();
emit(state.copyWith( emit(state.copyWith(status: ProfileStatus.loaded, profile: profile));
status: ProfileStatus.loaded, },
profile: profile, onError:
)); (String errorKey) =>
} catch (e) { state.copyWith(status: ProfileStatus.error, errorMessage: errorKey),
emit(state.copyWith( );
status: ProfileStatus.error,
errorMessage: e.toString(),
));
}
} }
/// Signs out the current user. /// Signs out the current user.
@@ -49,12 +47,21 @@ class ProfileCubit extends Cubit<ProfileState> {
emit(state.copyWith(status: ProfileStatus.loading)); emit(state.copyWith(status: ProfileStatus.loading));
try { await handleError(
emit: emit,
action: () async {
await _signOutUseCase(); await _signOutUseCase();
emit(state.copyWith(status: ProfileStatus.signedOut)); emit(state.copyWith(status: ProfileStatus.signedOut));
} catch (e) { },
// Error handling can be added here if needed onError: (String _) {
// For now, we let the navigation happen regardless // For sign out errors, we might want to just proceed or show error
} // Current implementation was silent catch, let's keep it robust but consistent
// If we want to force navigation even on error, we would do it here
// But usually handleError emits the error state.
// Let's stick to standard error reporting for now.
return state.copyWith(status: ProfileStatus.error);
},
);
} }
} }

View File

@@ -14,7 +14,9 @@ import '../widgets/profile_menu_item.dart';
import '../widgets/profile_header.dart'; import '../widgets/profile_header.dart';
import '../widgets/reliability_score_bar.dart'; import '../widgets/reliability_score_bar.dart';
import '../widgets/reliability_stats_card.dart'; import '../widgets/reliability_stats_card.dart';
import '../widgets/reliability_stats_card.dart';
import '../widgets/section_title.dart'; import '../widgets/section_title.dart';
import '../widgets/language_selector_bottom_sheet.dart';
/// The main Staff Profile page. /// The main Staff Profile page.
/// ///
@@ -178,6 +180,25 @@ class StaffProfilePage extends StatelessWidget {
], ],
), ),
const SizedBox(height: UiConstants.space6), const SizedBox(height: UiConstants.space6),
SectionTitle(
i18n.header.title.contains("Perfil") ? "Ajustes" : "Settings",
),
ProfileMenuGrid(
crossAxisCount: 3,
children: [
ProfileMenuItem(
icon: UiIcons.globe,
label: i18n.header.title.contains("Perfil") ? "Idioma" : "Language",
onTap: () {
showModalBottomSheet(
context: context,
builder: (context) => const LanguageSelectorBottomSheet(),
);
},
),
],
),
const SizedBox(height: UiConstants.space6),
LogoutButton( LogoutButton(
onTap: () => _onSignOut(cubit, state), onTap: () => _onSignOut(cubit, state),
), ),

View File

@@ -0,0 +1,106 @@
import 'package:core_localization/core_localization.dart';
import 'package:design_system/design_system.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_modular/flutter_modular.dart';
/// A bottom sheet that allows the user to select their preferred language.
///
/// Displays options for English and Spanish, and updates the application's
/// locale via the [LocaleBloc].
class LanguageSelectorBottomSheet extends StatelessWidget {
/// Creates a [LanguageSelectorBottomSheet].
const LanguageSelectorBottomSheet({super.key});
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(UiConstants.space6),
decoration: BoxDecoration(
color: UiColors.background,
borderRadius: BorderRadius.vertical(top: Radius.circular(UiConstants.radiusBase)),
),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Text(
t.settings.change_language,
style: UiTypography.headline4m,
textAlign: TextAlign.center,
),
SizedBox(height: UiConstants.space6),
_buildLanguageOption(
context,
label: 'English',
locale: AppLocale.en,
),
SizedBox(height: UiConstants.space4),
_buildLanguageOption(
context,
label: 'Español',
locale: AppLocale.es,
),
SizedBox(height: UiConstants.space6),
],
),
);
}
Widget _buildLanguageOption(
BuildContext context, {
required String label,
required AppLocale locale,
}) {
// Check if this option is currently selected.
// We can use LocaleSettings.currentLocale for a quick check,
// or access the BLoC state if we wanted to be reactive to state changes here directly,
// but LocaleSettings is sufficient for the initial check.
final bool isSelected = LocaleSettings.currentLocale == locale;
return InkWell(
onTap: () {
// Dispatch the ChangeLocale event to the LocaleBloc
Modular.get<LocaleBloc>().add(ChangeLocale(locale.flutterLocale));
// Close the bottom sheet
Navigator.pop(context);
// Force a rebuild of the entire app to reflect locale change instantly if not handled by root widget
// (Usually handled by BlocBuilder at the root, but this ensures settings are updated)
},
borderRadius: BorderRadius.circular(UiConstants.radiusMdValue),
child: Container(
padding: EdgeInsets.symmetric(
vertical: UiConstants.space4,
horizontal: UiConstants.space4,
),
decoration: BoxDecoration(
color: isSelected ? UiColors.primary.withValues(alpha: 0.1) : UiColors.background,
borderRadius: BorderRadius.circular(UiConstants.radiusMdValue),
border: Border.all(
color: isSelected ? UiColors.primary : UiColors.border,
width: isSelected ? 2 : 1,
),
),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
label,
style: isSelected
? UiTypography.body1b.copyWith(color: UiColors.primary)
: UiTypography.body1r,
),
if (isSelected)
Icon(
UiIcons.check,
color: UiColors.primary,
size: 24.0,
),
],
),
),
);
}
}

View File

@@ -1,28 +1,38 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../../domain/usecases/get_certificates_usecase.dart'; import '../../../domain/usecases/get_certificates_usecase.dart';
import 'certificates_state.dart'; import 'certificates_state.dart';
class CertificatesCubit extends Cubit<CertificatesState> { class CertificatesCubit extends Cubit<CertificatesState>
with BlocErrorHandler<CertificatesState> {
final GetCertificatesUseCase _getCertificatesUseCase; final GetCertificatesUseCase _getCertificatesUseCase;
CertificatesCubit(this._getCertificatesUseCase) : super(const CertificatesState()) { CertificatesCubit(this._getCertificatesUseCase)
: super(const CertificatesState()) {
loadCertificates(); loadCertificates();
} }
Future<void> loadCertificates() async { Future<void> loadCertificates() async {
emit(state.copyWith(status: CertificatesStatus.loading)); emit(state.copyWith(status: CertificatesStatus.loading));
try { await handleError(
final List<StaffDocument> certificates = await _getCertificatesUseCase(); emit: emit,
emit(state.copyWith( action: () async {
final List<StaffDocument> certificates =
await _getCertificatesUseCase();
emit(
state.copyWith(
status: CertificatesStatus.success, status: CertificatesStatus.success,
certificates: certificates, certificates: certificates,
)); ),
} catch (e) { );
emit(state.copyWith( },
onError:
(String errorKey) => state.copyWith(
status: CertificatesStatus.failure, status: CertificatesStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
} }

View File

@@ -49,6 +49,7 @@ class DocumentsRepositoryImpl implements DocumentsRepository {
), ),
]; ];
/*
try { try {
final QueryResult<ListStaffDocumentsByStaffIdData, final QueryResult<ListStaffDocumentsByStaffIdData,
ListStaffDocumentsByStaffIdVariables> result = ListStaffDocumentsByStaffIdVariables> result =
@@ -63,6 +64,7 @@ class DocumentsRepositoryImpl implements DocumentsRepository {
} catch (e) { } catch (e) {
throw Exception('Failed to fetch documents: $e'); throw Exception('Failed to fetch documents: $e');
} }
*/
} }
domain.StaffDocument _mapToDomain( domain.StaffDocument _mapToDomain(

View File

@@ -1,26 +1,34 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../../domain/usecases/get_documents_usecase.dart'; import '../../../domain/usecases/get_documents_usecase.dart';
import 'documents_state.dart'; import 'documents_state.dart';
class DocumentsCubit extends Cubit<DocumentsState> { class DocumentsCubit extends Cubit<DocumentsState>
with BlocErrorHandler<DocumentsState> {
final GetDocumentsUseCase _getDocumentsUseCase; final GetDocumentsUseCase _getDocumentsUseCase;
DocumentsCubit(this._getDocumentsUseCase) : super(const DocumentsState()); DocumentsCubit(this._getDocumentsUseCase) : super(const DocumentsState());
Future<void> loadDocuments() async { Future<void> loadDocuments() async {
emit(state.copyWith(status: DocumentsStatus.loading)); emit(state.copyWith(status: DocumentsStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final List<StaffDocument> documents = await _getDocumentsUseCase(); final List<StaffDocument> documents = await _getDocumentsUseCase();
emit(state.copyWith( emit(
state.copyWith(
status: DocumentsStatus.success, status: DocumentsStatus.success,
documents: documents, documents: documents,
)); ),
} catch (e) { );
emit(state.copyWith( },
onError:
(String errorKey) => state.copyWith(
status: DocumentsStatus.failure, status: DocumentsStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
} }

View File

@@ -1,11 +1,12 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
import '../../../domain/usecases/submit_i9_form_usecase.dart'; import '../../../domain/usecases/submit_i9_form_usecase.dart';
import 'form_i9_state.dart'; import 'form_i9_state.dart';
class FormI9Cubit extends Cubit<FormI9State> { class FormI9Cubit extends Cubit<FormI9State> with BlocErrorHandler<FormI9State> {
final SubmitI9FormUseCase _submitI9FormUseCase; final SubmitI9FormUseCase _submitI9FormUseCase;
String _formId = ''; String _formId = '';
@@ -19,7 +20,8 @@ class FormI9Cubit extends Cubit<FormI9State> {
final Map<String, dynamic> data = form.formData; final Map<String, dynamic> data = form.formData;
_formId = form.id; _formId = form.id;
emit(FormI9State( emit(
FormI9State(
firstName: data['firstName'] as String? ?? '', firstName: data['firstName'] as String? ?? '',
lastName: data['lastName'] as String? ?? '', lastName: data['lastName'] as String? ?? '',
middleInitial: data['middleInitial'] as String? ?? '', middleInitial: data['middleInitial'] as String? ?? '',
@@ -40,7 +42,8 @@ class FormI9Cubit extends Cubit<FormI9State> {
countryIssuance: data['countryIssuance'] as String? ?? '', countryIssuance: data['countryIssuance'] as String? ?? '',
preparerUsed: data['preparerUsed'] as bool? ?? false, preparerUsed: data['preparerUsed'] as bool? ?? false,
signature: data['signature'] as String? ?? '', signature: data['signature'] as String? ?? '',
)); ),
);
} }
void nextStep(int totalSteps) { void nextStep(int totalSteps) {
@@ -58,8 +61,10 @@ class FormI9Cubit extends Cubit<FormI9State> {
// Personal Info // Personal Info
void firstNameChanged(String value) => emit(state.copyWith(firstName: value)); void firstNameChanged(String value) => emit(state.copyWith(firstName: value));
void lastNameChanged(String value) => emit(state.copyWith(lastName: value)); void lastNameChanged(String value) => emit(state.copyWith(lastName: value));
void middleInitialChanged(String value) => emit(state.copyWith(middleInitial: value)); void middleInitialChanged(String value) =>
void otherLastNamesChanged(String value) => emit(state.copyWith(otherLastNames: value)); emit(state.copyWith(middleInitial: value));
void otherLastNamesChanged(String value) =>
emit(state.copyWith(otherLastNames: value));
void dobChanged(String value) => emit(state.copyWith(dob: value)); void dobChanged(String value) => emit(state.copyWith(dob: value));
void ssnChanged(String value) => emit(state.copyWith(ssn: value)); void ssnChanged(String value) => emit(state.copyWith(ssn: value));
void emailChanged(String value) => emit(state.copyWith(email: value)); void emailChanged(String value) => emit(state.copyWith(email: value));
@@ -73,19 +78,27 @@ class FormI9Cubit extends Cubit<FormI9State> {
void zipCodeChanged(String value) => emit(state.copyWith(zipCode: value)); void zipCodeChanged(String value) => emit(state.copyWith(zipCode: value));
// Citizenship // Citizenship
void citizenshipStatusChanged(String value) => emit(state.copyWith(citizenshipStatus: value)); void citizenshipStatusChanged(String value) =>
void uscisNumberChanged(String value) => emit(state.copyWith(uscisNumber: value)); emit(state.copyWith(citizenshipStatus: value));
void admissionNumberChanged(String value) => emit(state.copyWith(admissionNumber: value)); void uscisNumberChanged(String value) =>
void passportNumberChanged(String value) => emit(state.copyWith(passportNumber: value)); emit(state.copyWith(uscisNumber: value));
void countryIssuanceChanged(String value) => emit(state.copyWith(countryIssuance: value)); void admissionNumberChanged(String value) =>
emit(state.copyWith(admissionNumber: value));
void passportNumberChanged(String value) =>
emit(state.copyWith(passportNumber: value));
void countryIssuanceChanged(String value) =>
emit(state.copyWith(countryIssuance: value));
// Signature // Signature
void preparerUsedChanged(bool value) => emit(state.copyWith(preparerUsed: value)); void preparerUsedChanged(bool value) =>
emit(state.copyWith(preparerUsed: value));
void signatureChanged(String value) => emit(state.copyWith(signature: value)); void signatureChanged(String value) => emit(state.copyWith(signature: value));
Future<void> submit() async { Future<void> submit() async {
emit(state.copyWith(status: FormI9Status.submitting)); emit(state.copyWith(status: FormI9Status.submitting));
try { await handleError(
emit: emit,
action: () async {
final Map<String, dynamic> formData = { final Map<String, dynamic> formData = {
'firstName': state.firstName, 'firstName': state.firstName,
'lastName': state.lastName, 'lastName': state.lastName,
@@ -117,11 +130,13 @@ class FormI9Cubit extends Cubit<FormI9State> {
await _submitI9FormUseCase(form); await _submitI9FormUseCase(form);
emit(state.copyWith(status: FormI9Status.success)); emit(state.copyWith(status: FormI9Status.success));
} catch (e) { },
emit(state.copyWith( onError:
(String errorKey) => state.copyWith(
status: FormI9Status.failure, status: FormI9Status.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
} }

View File

@@ -1,26 +1,29 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../../domain/usecases/get_tax_forms_usecase.dart'; import '../../../domain/usecases/get_tax_forms_usecase.dart';
import 'tax_forms_state.dart'; import 'tax_forms_state.dart';
class TaxFormsCubit extends Cubit<TaxFormsState> { class TaxFormsCubit extends Cubit<TaxFormsState>
with BlocErrorHandler<TaxFormsState> {
final GetTaxFormsUseCase _getTaxFormsUseCase; final GetTaxFormsUseCase _getTaxFormsUseCase;
TaxFormsCubit(this._getTaxFormsUseCase) : super(const TaxFormsState()); TaxFormsCubit(this._getTaxFormsUseCase) : super(const TaxFormsState());
Future<void> loadTaxForms() async { Future<void> loadTaxForms() async {
emit(state.copyWith(status: TaxFormsStatus.loading)); emit(state.copyWith(status: TaxFormsStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final List<TaxForm> forms = await _getTaxFormsUseCase(); final List<TaxForm> forms = await _getTaxFormsUseCase();
emit(state.copyWith( emit(state.copyWith(status: TaxFormsStatus.success, forms: forms));
status: TaxFormsStatus.success, },
forms: forms, onError:
)); (String errorKey) => state.copyWith(
} catch (e) {
emit(state.copyWith(
status: TaxFormsStatus.failure, status: TaxFormsStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
} }

View File

@@ -1,11 +1,12 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import 'package:uuid/uuid.dart'; import 'package:uuid/uuid.dart';
import '../../../domain/usecases/submit_w4_form_usecase.dart'; import '../../../domain/usecases/submit_w4_form_usecase.dart';
import 'form_w4_state.dart'; import 'form_w4_state.dart';
class FormW4Cubit extends Cubit<FormW4State> { class FormW4Cubit extends Cubit<FormW4State> with BlocErrorHandler<FormW4State> {
final SubmitW4FormUseCase _submitW4FormUseCase; final SubmitW4FormUseCase _submitW4FormUseCase;
String _formId = ''; String _formId = '';
@@ -26,7 +27,8 @@ class FormW4Cubit extends Cubit<FormW4State> {
final String zip = data['zipCode'] as String? ?? ''; final String zip = data['zipCode'] as String? ?? '';
final String cityStateZip = '$city, $stateVal $zip'.trim(); final String cityStateZip = '$city, $stateVal $zip'.trim();
emit(FormW4State( emit(
FormW4State(
firstName: data['firstName'] as String? ?? '', firstName: data['firstName'] as String? ?? '',
lastName: data['lastName'] as String? ?? '', lastName: data['lastName'] as String? ?? '',
ssn: data['ssn'] as String? ?? '', ssn: data['ssn'] as String? ?? '',
@@ -40,7 +42,8 @@ class FormW4Cubit extends Cubit<FormW4State> {
deductions: data['deductions'] as String? ?? '', deductions: data['deductions'] as String? ?? '',
extraWithholding: data['extraWithholding'] as String? ?? '', extraWithholding: data['extraWithholding'] as String? ?? '',
signature: data['signature'] as String? ?? '', signature: data['signature'] as String? ?? '',
)); ),
);
} }
void nextStep(int totalSteps) { void nextStep(int totalSteps) {
@@ -62,29 +65,40 @@ class FormW4Cubit extends Cubit<FormW4State> {
void lastNameChanged(String value) => emit(state.copyWith(lastName: value)); void lastNameChanged(String value) => emit(state.copyWith(lastName: value));
void ssnChanged(String value) => emit(state.copyWith(ssn: value)); void ssnChanged(String value) => emit(state.copyWith(ssn: value));
void addressChanged(String value) => emit(state.copyWith(address: value)); void addressChanged(String value) => emit(state.copyWith(address: value));
void cityStateZipChanged(String value) => emit(state.copyWith(cityStateZip: value)); void cityStateZipChanged(String value) =>
emit(state.copyWith(cityStateZip: value));
// Form Data // Form Data
void filingStatusChanged(String value) => emit(state.copyWith(filingStatus: value)); void filingStatusChanged(String value) =>
void multipleJobsChanged(bool value) => emit(state.copyWith(multipleJobs: value)); emit(state.copyWith(filingStatus: value));
void qualifyingChildrenChanged(int value) => emit(state.copyWith(qualifyingChildren: value)); void multipleJobsChanged(bool value) =>
void otherDependentsChanged(int value) => emit(state.copyWith(otherDependents: value)); emit(state.copyWith(multipleJobs: value));
void qualifyingChildrenChanged(int value) =>
emit(state.copyWith(qualifyingChildren: value));
void otherDependentsChanged(int value) =>
emit(state.copyWith(otherDependents: value));
// Adjustments // Adjustments
void otherIncomeChanged(String value) => emit(state.copyWith(otherIncome: value)); void otherIncomeChanged(String value) =>
void deductionsChanged(String value) => emit(state.copyWith(deductions: value)); emit(state.copyWith(otherIncome: value));
void extraWithholdingChanged(String value) => emit(state.copyWith(extraWithholding: value)); void deductionsChanged(String value) =>
emit(state.copyWith(deductions: value));
void extraWithholdingChanged(String value) =>
emit(state.copyWith(extraWithholding: value));
void signatureChanged(String value) => emit(state.copyWith(signature: value)); void signatureChanged(String value) => emit(state.copyWith(signature: value));
Future<void> submit() async { Future<void> submit() async {
emit(state.copyWith(status: FormW4Status.submitting)); emit(state.copyWith(status: FormW4Status.submitting));
try { await handleError(
emit: emit,
action: () async {
final Map<String, dynamic> formData = { final Map<String, dynamic> formData = {
'firstName': state.firstName, 'firstName': state.firstName,
'lastName': state.lastName, 'lastName': state.lastName,
'ssn': state.ssn, 'ssn': state.ssn,
'address': state.address, 'address': state.address,
'cityStateZip': state.cityStateZip, // Note: Repository should split this if needed. 'cityStateZip':
state.cityStateZip, // Note: Repository should split this if needed.
'filingStatus': state.filingStatus, 'filingStatus': state.filingStatus,
'multipleJobs': state.multipleJobs, 'multipleJobs': state.multipleJobs,
'qualifyingChildren': state.qualifyingChildren, 'qualifyingChildren': state.qualifyingChildren,
@@ -103,11 +117,13 @@ class FormW4Cubit extends Cubit<FormW4State> {
await _submitW4FormUseCase(form); await _submitW4FormUseCase(form);
emit(state.copyWith(status: FormW4Status.success)); emit(state.copyWith(status: FormW4Status.success));
} catch (e) { },
emit(state.copyWith( onError:
(String errorKey) => state.copyWith(
status: FormW4Status.failure, status: FormW4Status.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
} }

View File

@@ -147,12 +147,12 @@ class TaxFormsPage extends StatelessWidget {
if (form is I9TaxForm) { if (form is I9TaxForm) {
final result = await Modular.to.pushNamed('i9', arguments: form); final result = await Modular.to.pushNamed('i9', arguments: form);
if (result == true && context.mounted) { if (result == true && context.mounted) {
BlocProvider.of<TaxFormsCubit>(context).loadTaxForms(); await BlocProvider.of<TaxFormsCubit>(context).loadTaxForms();
} }
} else if (form is W4TaxForm) { } else if (form is W4TaxForm) {
final result = await Modular.to.pushNamed('w4', arguments: form); final result = await Modular.to.pushNamed('w4', arguments: form);
if (result == true && context.mounted) { if (result == true && context.mounted) {
BlocProvider.of<TaxFormsCubit>(context).loadTaxForms(); await BlocProvider.of<TaxFormsCubit>(context).loadTaxForms();
} }
} }
}, },

View File

@@ -1,11 +1,13 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/arguments/add_bank_account_params.dart'; import '../../domain/arguments/add_bank_account_params.dart';
import '../../domain/usecases/add_bank_account_usecase.dart'; import '../../domain/usecases/add_bank_account_usecase.dart';
import '../../domain/usecases/get_bank_accounts_usecase.dart'; import '../../domain/usecases/get_bank_accounts_usecase.dart';
import 'bank_account_state.dart'; import 'bank_account_state.dart';
class BankAccountCubit extends Cubit<BankAccountState> { class BankAccountCubit extends Cubit<BankAccountState>
with BlocErrorHandler<BankAccountState> {
final GetBankAccountsUseCase _getBankAccountsUseCase; final GetBankAccountsUseCase _getBankAccountsUseCase;
final AddBankAccountUseCase _addBankAccountUseCase; final AddBankAccountUseCase _addBankAccountUseCase;
@@ -18,18 +20,23 @@ class BankAccountCubit extends Cubit<BankAccountState> {
Future<void> loadAccounts() async { Future<void> loadAccounts() async {
emit(state.copyWith(status: BankAccountStatus.loading)); emit(state.copyWith(status: BankAccountStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final List<BankAccount> accounts = await _getBankAccountsUseCase(); final List<BankAccount> accounts = await _getBankAccountsUseCase();
emit(state.copyWith( emit(
state.copyWith(
status: BankAccountStatus.loaded, status: BankAccountStatus.loaded,
accounts: accounts, accounts: accounts,
)); ),
} catch (e) { );
emit(state.copyWith( },
onError:
(String errorKey) => state.copyWith(
status: BankAccountStatus.error, status: BankAccountStatus.error,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
void toggleForm(bool show) { void toggleForm(bool show) {
@@ -52,26 +59,38 @@ class BankAccountCubit extends Cubit<BankAccountState> {
accountNumber: accountNumber, accountNumber: accountNumber,
accountName: '', accountName: '',
sortCode: routingNumber, sortCode: routingNumber,
type: type == 'CHECKING' ? BankAccountType.checking : BankAccountType.savings, type:
last4: accountNumber.length > 4 ? accountNumber.substring(accountNumber.length - 4) : accountNumber, type == 'CHECKING'
? BankAccountType.checking
: BankAccountType.savings,
last4:
accountNumber.length > 4
? accountNumber.substring(accountNumber.length - 4)
: accountNumber,
isPrimary: false, isPrimary: false,
); );
try { await handleError(
emit: emit,
action: () async {
await _addBankAccountUseCase(AddBankAccountParams(account: newAccount)); await _addBankAccountUseCase(AddBankAccountParams(account: newAccount));
// Re-fetch to get latest state including server-generated IDs // Re-fetch to get latest state including server-generated IDs
await loadAccounts(); await loadAccounts();
emit(state.copyWith( emit(
state.copyWith(
status: BankAccountStatus.accountAdded, status: BankAccountStatus.accountAdded,
showForm: false, // Close form on success showForm: false, // Close form on success
)); ),
} catch (e) { );
emit(state.copyWith( },
onError:
(String errorKey) => state.copyWith(
status: BankAccountStatus.error, status: BankAccountStatus.error,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
} }

View File

@@ -1,5 +1,6 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/arguments/get_time_cards_arguments.dart'; import '../../domain/arguments/get_time_cards_arguments.dart';
import '../../domain/usecases/get_time_cards_usecase.dart'; import '../../domain/usecases/get_time_cards_usecase.dart';
@@ -8,7 +9,8 @@ part 'time_card_event.dart';
part 'time_card_state.dart'; part 'time_card_state.dart';
/// BLoC to manage Time Card state. /// BLoC to manage Time Card state.
class TimeCardBloc extends Bloc<TimeCardEvent, TimeCardState> { class TimeCardBloc extends Bloc<TimeCardEvent, TimeCardState>
with BlocErrorHandler<TimeCardState> {
final GetTimeCardsUseCase getTimeCards; final GetTimeCardsUseCase getTimeCards;
TimeCardBloc({required this.getTimeCards}) : super(TimeCardInitial()) { TimeCardBloc({required this.getTimeCards}) : super(TimeCardInitial()) {
@@ -17,26 +19,45 @@ class TimeCardBloc extends Bloc<TimeCardEvent, TimeCardState> {
} }
/// Handles fetching time cards for the requested month. /// Handles fetching time cards for the requested month.
Future<void> _onLoadTimeCards(LoadTimeCards event, Emitter<TimeCardState> emit) async { Future<void> _onLoadTimeCards(
LoadTimeCards event,
Emitter<TimeCardState> emit,
) async {
emit(TimeCardLoading()); emit(TimeCardLoading());
try { await handleError(
final List<TimeCard> cards = await getTimeCards(GetTimeCardsArguments(event.month)); emit: emit,
action: () async {
final List<TimeCard> cards = await getTimeCards(
GetTimeCardsArguments(event.month),
);
final double totalHours = cards.fold(0.0, (double sum, TimeCard t) => sum + t.totalHours); final double totalHours = cards.fold(
final double totalEarnings = cards.fold(0.0, (double sum, TimeCard t) => sum + t.totalPay); 0.0,
(double sum, TimeCard t) => sum + t.totalHours,
);
final double totalEarnings = cards.fold(
0.0,
(double sum, TimeCard t) => sum + t.totalPay,
);
emit(TimeCardLoaded( emit(
TimeCardLoaded(
timeCards: cards, timeCards: cards,
selectedMonth: event.month, selectedMonth: event.month,
totalHours: totalHours, totalHours: totalHours,
totalEarnings: totalEarnings, totalEarnings: totalEarnings,
)); ),
} catch (e) { );
emit(TimeCardError(e.toString())); },
} onError: (String errorKey) => TimeCardError(errorKey),
);
} }
Future<void> _onChangeMonth(ChangeMonth event, Emitter<TimeCardState> emit) async { Future<void> _onChangeMonth(
ChangeMonth event,
Emitter<TimeCardState> emit,
) async {
add(LoadTimeCards(event.month)); add(LoadTimeCards(event.month));
} }
} }

View File

@@ -1,4 +1,5 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/arguments/save_attire_arguments.dart'; import '../../domain/arguments/save_attire_arguments.dart';
@@ -8,7 +9,8 @@ import '../../domain/usecases/save_attire_usecase.dart';
import '../../domain/usecases/upload_attire_photo_usecase.dart'; import '../../domain/usecases/upload_attire_photo_usecase.dart';
import 'attire_state.dart'; import 'attire_state.dart';
class AttireCubit extends Cubit<AttireState> { class AttireCubit extends Cubit<AttireState>
with BlocErrorHandler<AttireState> {
final GetAttireOptionsUseCase _getAttireOptionsUseCase; final GetAttireOptionsUseCase _getAttireOptionsUseCase;
final SaveAttireUseCase _saveAttireUseCase; final SaveAttireUseCase _saveAttireUseCase;
final UploadAttirePhotoUseCase _uploadAttirePhotoUseCase; final UploadAttirePhotoUseCase _uploadAttirePhotoUseCase;
@@ -23,30 +25,41 @@ class AttireCubit extends Cubit<AttireState> {
Future<void> loadOptions() async { Future<void> loadOptions() async {
emit(state.copyWith(status: AttireStatus.loading)); emit(state.copyWith(status: AttireStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final List<AttireItem> options = await _getAttireOptionsUseCase(); final List<AttireItem> options = await _getAttireOptionsUseCase();
// Auto-select mandatory items initially as per prototype // Auto-select mandatory items initially as per prototype
final List<String> mandatoryIds = options final List<String> mandatoryIds =
options
.where((AttireItem e) => e.isMandatory) .where((AttireItem e) => e.isMandatory)
.map((AttireItem e) => e.id) .map((AttireItem e) => e.id)
.toList(); .toList();
final List<String> initialSelection = List<String>.from(state.selectedIds); final List<String> initialSelection = List<String>.from(
state.selectedIds,
);
for (final String id in mandatoryIds) { for (final String id in mandatoryIds) {
if (!initialSelection.contains(id)) { if (!initialSelection.contains(id)) {
initialSelection.add(id); initialSelection.add(id);
} }
} }
emit(state.copyWith( emit(
state.copyWith(
status: AttireStatus.success, status: AttireStatus.success,
options: options, options: options,
selectedIds: initialSelection, selectedIds: initialSelection,
)); ),
} catch (e) { );
emit(state.copyWith(status: AttireStatus.failure, errorMessage: e.toString())); },
} onError:
(String errorKey) => state.copyWith(
status: AttireStatus.failure,
errorMessage: errorKey,
),
);
} }
void toggleSelection(String id) { void toggleSelection(String id) {
@@ -67,51 +80,81 @@ class AttireCubit extends Cubit<AttireState> {
} }
Future<void> uploadPhoto(String itemId) async { Future<void> uploadPhoto(String itemId) async {
final Map<String, bool> currentUploading = Map<String, bool>.from(state.uploadingStatus); final Map<String, bool> currentUploading = Map<String, bool>.from(
state.uploadingStatus,
);
currentUploading[itemId] = true; currentUploading[itemId] = true;
emit(state.copyWith(uploadingStatus: currentUploading)); emit(state.copyWith(uploadingStatus: currentUploading));
try { await handleError(
emit: emit,
action: () async {
final String url = await _uploadAttirePhotoUseCase( final String url = await _uploadAttirePhotoUseCase(
UploadAttirePhotoArguments(itemId: itemId), UploadAttirePhotoArguments(itemId: itemId),
); );
final Map<String, String> currentPhotos = Map<String, String>.from(state.photoUrls); final Map<String, String> currentPhotos = Map<String, String>.from(
state.photoUrls,
);
currentPhotos[itemId] = url; currentPhotos[itemId] = url;
// Auto-select item on upload success if not selected // Auto-select item on upload success if not selected
final List<String> currentSelection = List<String>.from(state.selectedIds); final List<String> currentSelection = List<String>.from(
state.selectedIds,
);
if (!currentSelection.contains(itemId)) { if (!currentSelection.contains(itemId)) {
currentSelection.add(itemId); currentSelection.add(itemId);
} }
currentUploading[itemId] = false; final Map<String, bool> updatedUploading = Map<String, bool>.from(
emit(state.copyWith( state.uploadingStatus,
uploadingStatus: currentUploading, );
updatedUploading[itemId] = false;
emit(
state.copyWith(
uploadingStatus: updatedUploading,
photoUrls: currentPhotos, photoUrls: currentPhotos,
selectedIds: currentSelection, selectedIds: currentSelection,
)); ),
} catch (e) { );
currentUploading[itemId] = false; },
emit(state.copyWith( onError: (String errorKey) {
uploadingStatus: currentUploading, final Map<String, bool> updatedUploading = Map<String, bool>.from(
state.uploadingStatus,
);
updatedUploading[itemId] = false;
// Could handle error specifically via snackbar event // Could handle error specifically via snackbar event
)); // For now, attaching the error message but keeping state generally usable
} return state.copyWith(
uploadingStatus: updatedUploading,
errorMessage: errorKey,
);
},
);
} }
Future<void> save() async { Future<void> save() async {
if (!state.canSave) return; if (!state.canSave) return;
emit(state.copyWith(status: AttireStatus.saving)); emit(state.copyWith(status: AttireStatus.saving));
try { await handleError(
await _saveAttireUseCase(SaveAttireArguments( emit: emit,
action: () async {
await _saveAttireUseCase(
SaveAttireArguments(
selectedItemIds: state.selectedIds, selectedItemIds: state.selectedIds,
photoUrls: state.photoUrls, photoUrls: state.photoUrls,
)); ),
);
emit(state.copyWith(status: AttireStatus.saved)); emit(state.copyWith(status: AttireStatus.saved));
} catch (e) { },
emit(state.copyWith(status: AttireStatus.failure, errorMessage: e.toString())); onError:
} (String errorKey) => state.copyWith(
status: AttireStatus.failure,
errorMessage: errorKey,
),
);
} }
} }

View File

@@ -1,4 +1,5 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/arguments/get_emergency_contacts_arguments.dart'; import '../../domain/arguments/get_emergency_contacts_arguments.dart';
import '../../domain/arguments/save_emergency_contacts_arguments.dart'; import '../../domain/arguments/save_emergency_contacts_arguments.dart';
@@ -12,7 +13,8 @@ export 'emergency_contact_state.dart';
// BLoC // BLoC
class EmergencyContactBloc class EmergencyContactBloc
extends Bloc<EmergencyContactEvent, EmergencyContactState> { extends Bloc<EmergencyContactEvent, EmergencyContactState>
with BlocErrorHandler<EmergencyContactState> {
final GetEmergencyContactsUseCase getEmergencyContacts; final GetEmergencyContactsUseCase getEmergencyContacts;
final SaveEmergencyContactsUseCase saveEmergencyContacts; final SaveEmergencyContactsUseCase saveEmergencyContacts;
@@ -29,28 +31,29 @@ class EmergencyContactBloc
add(EmergencyContactsLoaded()); add(EmergencyContactsLoaded());
} }
Future<void> _onLoaded( Future<void> _onLoaded(
EmergencyContactsLoaded event, EmergencyContactsLoaded event,
Emitter<EmergencyContactState> emit, Emitter<EmergencyContactState> emit,
) async { ) async {
emit(state.copyWith(status: EmergencyContactStatus.loading)); emit(state.copyWith(status: EmergencyContactStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final contacts = await getEmergencyContacts( final contacts = await getEmergencyContacts(
const GetEmergencyContactsArguments(), const GetEmergencyContactsArguments(),
); );
emit(state.copyWith( emit(
state.copyWith(
status: EmergencyContactStatus.loaded, status: EmergencyContactStatus.loaded,
contacts: contacts.isNotEmpty contacts: contacts.isNotEmpty ? contacts : [EmergencyContact.empty()],
? contacts ),
: [EmergencyContact.empty()], );
)); },
} catch (e) { onError: (String errorKey) => state.copyWith(
emit(state.copyWith(
status: EmergencyContactStatus.failure, status: EmergencyContactStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
void _onAdded( void _onAdded(
@@ -85,18 +88,19 @@ class EmergencyContactBloc
Emitter<EmergencyContactState> emit, Emitter<EmergencyContactState> emit,
) async { ) async {
emit(state.copyWith(status: EmergencyContactStatus.saving)); emit(state.copyWith(status: EmergencyContactStatus.saving));
try { await handleError(
emit: emit,
action: () async {
await saveEmergencyContacts( await saveEmergencyContacts(
SaveEmergencyContactsArguments( SaveEmergencyContactsArguments(contacts: state.contacts),
contacts: state.contacts,
),
); );
emit(state.copyWith(status: EmergencyContactStatus.saved)); emit(state.copyWith(status: EmergencyContactStatus.saved));
} catch (e) { },
emit(state.copyWith( onError: (String errorKey) => state.copyWith(
status: EmergencyContactStatus.failure, status: EmergencyContactStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
} }

View File

@@ -1,5 +1,6 @@
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/arguments/save_experience_arguments.dart'; import '../../domain/arguments/save_experience_arguments.dart';
import '../../domain/usecases/get_staff_industries_usecase.dart'; import '../../domain/usecases/get_staff_industries_usecase.dart';
@@ -92,8 +93,8 @@ class ExperienceState extends Equatable {
} }
// BLoC // BLoC
class ExperienceBloc extends Bloc<ExperienceEvent, ExperienceState> { class ExperienceBloc extends Bloc<ExperienceEvent, ExperienceState>
with BlocErrorHandler<ExperienceState> {
final GetStaffIndustriesUseCase getIndustries; final GetStaffIndustriesUseCase getIndustries;
final GetStaffSkillsUseCase getSkills; final GetStaffSkillsUseCase getSkills;
final SaveExperienceUseCase saveExperience; final SaveExperienceUseCase saveExperience;
@@ -102,10 +103,12 @@ class ExperienceBloc extends Bloc<ExperienceEvent, ExperienceState> {
required this.getIndustries, required this.getIndustries,
required this.getSkills, required this.getSkills,
required this.saveExperience, required this.saveExperience,
}) : super(const ExperienceState( }) : super(
const ExperienceState(
availableIndustries: Industry.values, availableIndustries: Industry.values,
availableSkills: ExperienceSkill.values, availableSkills: ExperienceSkill.values,
)) { ),
) {
on<ExperienceLoaded>(_onLoaded); on<ExperienceLoaded>(_onLoaded);
on<ExperienceIndustryToggled>(_onIndustryToggled); on<ExperienceIndustryToggled>(_onIndustryToggled);
on<ExperienceSkillToggled>(_onSkillToggled); on<ExperienceSkillToggled>(_onSkillToggled);
@@ -120,26 +123,28 @@ class ExperienceBloc extends Bloc<ExperienceEvent, ExperienceState> {
Emitter<ExperienceState> emit, Emitter<ExperienceState> emit,
) async { ) async {
emit(state.copyWith(status: ExperienceStatus.loading)); emit(state.copyWith(status: ExperienceStatus.loading));
try { await handleError(
final results = await Future.wait([ emit: emit,
getIndustries(), action: () async {
getSkills(), final results = await Future.wait([getIndustries(), getSkills()]);
]);
emit(state.copyWith( emit(
state.copyWith(
status: ExperienceStatus.initial, status: ExperienceStatus.initial,
selectedIndustries: results[0] selectedIndustries:
results[0]
.map((e) => Industry.fromString(e)) .map((e) => Industry.fromString(e))
.whereType<Industry>() .whereType<Industry>()
.toList(), .toList(),
selectedSkills: results[1], selectedSkills: results[1],
)); ),
} catch (e) { );
emit(state.copyWith( },
onError: (String errorKey) => state.copyWith(
status: ExperienceStatus.failure, status: ExperienceStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
void _onIndustryToggled( void _onIndustryToggled(
@@ -183,7 +188,9 @@ class ExperienceBloc extends Bloc<ExperienceEvent, ExperienceState> {
Emitter<ExperienceState> emit, Emitter<ExperienceState> emit,
) async { ) async {
emit(state.copyWith(status: ExperienceStatus.loading)); emit(state.copyWith(status: ExperienceStatus.loading));
try { await handleError(
emit: emit,
action: () async {
await saveExperience( await saveExperience(
SaveExperienceArguments( SaveExperienceArguments(
industries: state.selectedIndustries.map((e) => e.value).toList(), industries: state.selectedIndustries.map((e) => e.value).toList(),
@@ -191,11 +198,12 @@ class ExperienceBloc extends Bloc<ExperienceEvent, ExperienceState> {
), ),
); );
emit(state.copyWith(status: ExperienceStatus.success)); emit(state.copyWith(status: ExperienceStatus.success));
} catch (e) { },
emit(state.copyWith( onError: (String errorKey) => state.copyWith(
status: ExperienceStatus.failure, status: ExperienceStatus.failure,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
} }

View File

@@ -1,5 +1,6 @@
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_modular/flutter_modular.dart'; import 'package:flutter_modular/flutter_modular.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import '../../domain/usecases/get_personal_info_usecase.dart'; import '../../domain/usecases/get_personal_info_usecase.dart';
@@ -13,8 +14,8 @@ import 'personal_info_state.dart';
/// during onboarding or profile editing. It delegates business logic to /// during onboarding or profile editing. It delegates business logic to
/// use cases following Clean Architecture principles. /// use cases following Clean Architecture principles.
class PersonalInfoBloc extends Bloc<PersonalInfoEvent, PersonalInfoState> class PersonalInfoBloc extends Bloc<PersonalInfoEvent, PersonalInfoState>
with BlocErrorHandler<PersonalInfoState>
implements Disposable { implements Disposable {
/// Creates a [PersonalInfoBloc]. /// Creates a [PersonalInfoBloc].
/// ///
/// Requires the use cases to load and update the profile. /// Requires the use cases to load and update the profile.
@@ -40,7 +41,9 @@ class PersonalInfoBloc extends Bloc<PersonalInfoEvent, PersonalInfoState>
Emitter<PersonalInfoState> emit, Emitter<PersonalInfoState> emit,
) async { ) async {
emit(state.copyWith(status: PersonalInfoStatus.loading)); emit(state.copyWith(status: PersonalInfoStatus.loading));
try { await handleError(
emit: emit,
action: () async {
final Staff staff = await _getPersonalInfoUseCase(); final Staff staff = await _getPersonalInfoUseCase();
// Initialize form values from staff entity // Initialize form values from staff entity
@@ -49,23 +52,26 @@ class PersonalInfoBloc extends Bloc<PersonalInfoEvent, PersonalInfoState>
'name': staff.name, 'name': staff.name,
'email': staff.email, 'email': staff.email,
'phone': staff.phone, 'phone': staff.phone,
'preferredLocations': staff.address != null 'preferredLocations':
staff.address != null
? <String?>[staff.address] ? <String?>[staff.address]
: <dynamic>[], // TODO: Map correctly when Staff entity supports list : <dynamic>[], // TODO: Map correctly when Staff entity supports list
'avatar': staff.avatar, 'avatar': staff.avatar,
}; };
emit(state.copyWith( emit(
state.copyWith(
status: PersonalInfoStatus.loaded, status: PersonalInfoStatus.loaded,
staff: staff, staff: staff,
formValues: initialValues, formValues: initialValues,
)); ),
} catch (e) { );
emit(state.copyWith( },
onError: (String errorKey) => state.copyWith(
status: PersonalInfoStatus.error, status: PersonalInfoStatus.error,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
/// Handles updating a field value in the current staff profile. /// Handles updating a field value in the current staff profile.
@@ -86,7 +92,9 @@ class PersonalInfoBloc extends Bloc<PersonalInfoEvent, PersonalInfoState>
if (state.staff == null) return; if (state.staff == null) return;
emit(state.copyWith(status: PersonalInfoStatus.saving)); emit(state.copyWith(status: PersonalInfoStatus.saving));
try { await handleError(
emit: emit,
action: () async {
final Staff updatedStaff = await _updatePersonalInfoUseCase( final Staff updatedStaff = await _updatePersonalInfoUseCase(
UpdatePersonalInfoParams( UpdatePersonalInfoParams(
staffId: state.staff!.id, staffId: state.staff!.id,
@@ -99,23 +107,26 @@ class PersonalInfoBloc extends Bloc<PersonalInfoEvent, PersonalInfoState>
'name': updatedStaff.name, 'name': updatedStaff.name,
'email': updatedStaff.email, 'email': updatedStaff.email,
'phone': updatedStaff.phone, 'phone': updatedStaff.phone,
'preferredLocations': updatedStaff.address != null 'preferredLocations':
updatedStaff.address != null
? <String?>[updatedStaff.address] ? <String?>[updatedStaff.address]
: <dynamic>[], : <dynamic>[],
'avatar': updatedStaff.avatar, 'avatar': updatedStaff.avatar,
}; };
emit(state.copyWith( emit(
state.copyWith(
status: PersonalInfoStatus.saved, status: PersonalInfoStatus.saved,
staff: updatedStaff, staff: updatedStaff,
formValues: newValues, formValues: newValues,
)); ),
} catch (e) { );
emit(state.copyWith( },
onError: (String errorKey) => state.copyWith(
status: PersonalInfoStatus.error, status: PersonalInfoStatus.error,
errorMessage: e.toString(), errorMessage: errorKey,
)); ),
} );
} }
void _onAddressSelected( void _onAddressSelected(
@@ -133,3 +144,4 @@ class PersonalInfoBloc extends Bloc<PersonalInfoEvent, PersonalInfoState>
close(); close();
} }
} }

View File

@@ -1,4 +1,5 @@
import 'package:bloc/bloc.dart'; import 'package:bloc/bloc.dart';
import 'package:krow_core/core.dart';
import '../../../domain/usecases/apply_for_shift_usecase.dart'; import '../../../domain/usecases/apply_for_shift_usecase.dart';
import '../../../domain/usecases/decline_shift_usecase.dart'; import '../../../domain/usecases/decline_shift_usecase.dart';
import '../../../domain/usecases/get_shift_details_usecase.dart'; import '../../../domain/usecases/get_shift_details_usecase.dart';
@@ -6,7 +7,8 @@ import '../../../domain/arguments/get_shift_details_arguments.dart';
import 'shift_details_event.dart'; import 'shift_details_event.dart';
import 'shift_details_state.dart'; import 'shift_details_state.dart';
class ShiftDetailsBloc extends Bloc<ShiftDetailsEvent, ShiftDetailsState> { class ShiftDetailsBloc extends Bloc<ShiftDetailsEvent, ShiftDetailsState>
with BlocErrorHandler<ShiftDetailsState> {
final GetShiftDetailsUseCase getShiftDetails; final GetShiftDetailsUseCase getShiftDetails;
final ApplyForShiftUseCase applyForShift; final ApplyForShiftUseCase applyForShift;
final DeclineShiftUseCase declineShift; final DeclineShiftUseCase declineShift;
@@ -26,7 +28,9 @@ class ShiftDetailsBloc extends Bloc<ShiftDetailsEvent, ShiftDetailsState> {
Emitter<ShiftDetailsState> emit, Emitter<ShiftDetailsState> emit,
) async { ) async {
emit(ShiftDetailsLoading()); emit(ShiftDetailsLoading());
try { await handleError(
emit: emit,
action: () async {
final shift = await getShiftDetails( final shift = await getShiftDetails(
GetShiftDetailsArguments(shiftId: event.shiftId, roleId: event.roleId), GetShiftDetailsArguments(shiftId: event.shiftId, roleId: event.roleId),
); );
@@ -35,16 +39,18 @@ class ShiftDetailsBloc extends Bloc<ShiftDetailsEvent, ShiftDetailsState> {
} else { } else {
emit(const ShiftDetailsError("Shift not found")); emit(const ShiftDetailsError("Shift not found"));
} }
} catch (e) { },
emit(ShiftDetailsError(e.toString())); onError: (String errorKey) => ShiftDetailsError(errorKey),
} );
} }
Future<void> _onBookShift( Future<void> _onBookShift(
BookShiftDetailsEvent event, BookShiftDetailsEvent event,
Emitter<ShiftDetailsState> emit, Emitter<ShiftDetailsState> emit,
) async { ) async {
try { await handleError(
emit: emit,
action: () async {
await applyForShift( await applyForShift(
event.shiftId, event.shiftId,
isInstantBook: true, isInstantBook: true,
@@ -53,20 +59,23 @@ class ShiftDetailsBloc extends Bloc<ShiftDetailsEvent, ShiftDetailsState> {
emit( emit(
ShiftActionSuccess("Shift successfully booked!", shiftDate: event.date), ShiftActionSuccess("Shift successfully booked!", shiftDate: event.date),
); );
} catch (e) { },
emit(ShiftDetailsError(e.toString())); onError: (String errorKey) => ShiftDetailsError(errorKey),
} );
} }
Future<void> _onDeclineShift( Future<void> _onDeclineShift(
DeclineShiftDetailsEvent event, DeclineShiftDetailsEvent event,
Emitter<ShiftDetailsState> emit, Emitter<ShiftDetailsState> emit,
) async { ) async {
try { await handleError(
emit: emit,
action: () async {
await declineShift(event.shiftId); await declineShift(event.shiftId);
emit(const ShiftActionSuccess("Shift declined")); emit(const ShiftActionSuccess("Shift declined"));
} catch (e) { },
emit(ShiftDetailsError(e.toString())); onError: (String errorKey) => ShiftDetailsError(errorKey),
} );
} }
} }

View File

@@ -1,5 +1,6 @@
import 'package:bloc/bloc.dart'; import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:krow_core/core.dart';
import 'package:krow_domain/krow_domain.dart'; import 'package:krow_domain/krow_domain.dart';
import 'package:meta/meta.dart'; import 'package:meta/meta.dart';
@@ -14,7 +15,8 @@ import '../../../domain/usecases/get_pending_assignments_usecase.dart';
part 'shifts_event.dart'; part 'shifts_event.dart';
part 'shifts_state.dart'; part 'shifts_state.dart';
class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> { class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState>
with BlocErrorHandler<ShiftsState> {
final GetMyShiftsUseCase getMyShifts; final GetMyShiftsUseCase getMyShifts;
final GetAvailableShiftsUseCase getAvailableShifts; final GetAvailableShiftsUseCase getAvailableShifts;
final GetPendingAssignmentsUseCase getPendingAssignments; final GetPendingAssignmentsUseCase getPendingAssignments;
@@ -44,10 +46,9 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
emit(ShiftsLoading()); emit(ShiftsLoading());
} }
// Determine what to load based on current tab? await handleError(
// Or load all for simplicity as per prototype logic which had them all in memory. emit: emit,
action: () async {
try {
final List<DateTime> days = _getCalendarDaysForOffset(0); final List<DateTime> days = _getCalendarDaysForOffset(0);
final myShiftsResult = await getMyShifts( final myShiftsResult = await getMyShifts(
GetMyShiftsArguments(start: days.first, end: days.last), GetMyShiftsArguments(start: days.first, end: days.last),
@@ -67,9 +68,9 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
searchQuery: '', searchQuery: '',
jobType: 'all', jobType: 'all',
)); ));
} catch (_) { },
emit(const ShiftsError('Failed to load shifts')); onError: (String errorKey) => ShiftsError(errorKey),
} );
} }
Future<void> _onLoadHistoryShifts( Future<void> _onLoadHistoryShifts(
@@ -81,7 +82,9 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
if (currentState.historyLoading || currentState.historyLoaded) return; if (currentState.historyLoading || currentState.historyLoaded) return;
emit(currentState.copyWith(historyLoading: true)); emit(currentState.copyWith(historyLoading: true));
try { await handleError(
emit: emit,
action: () async {
final historyResult = await getHistoryShifts(); final historyResult = await getHistoryShifts();
emit(currentState.copyWith( emit(currentState.copyWith(
myShiftsLoaded: true, myShiftsLoaded: true,
@@ -89,9 +92,14 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
historyLoading: false, historyLoading: false,
historyLoaded: true, historyLoaded: true,
)); ));
} catch (_) { },
emit(currentState.copyWith(historyLoading: false)); onError: (String errorKey) {
if (state is ShiftsLoaded) {
return (state as ShiftsLoaded).copyWith(historyLoading: false);
} }
return ShiftsError(errorKey);
},
);
} }
Future<void> _onLoadAvailableShifts( Future<void> _onLoadAvailableShifts(
@@ -103,7 +111,9 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
if (currentState.availableLoading || currentState.availableLoaded) return; if (currentState.availableLoading || currentState.availableLoaded) return;
emit(currentState.copyWith(availableLoading: true)); emit(currentState.copyWith(availableLoading: true));
try { await handleError(
emit: emit,
action: () async {
final availableResult = final availableResult =
await getAvailableShifts(const GetAvailableShiftsArguments()); await getAvailableShifts(const GetAvailableShiftsArguments());
emit(currentState.copyWith( emit(currentState.copyWith(
@@ -111,9 +121,14 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
availableLoading: false, availableLoading: false,
availableLoaded: true, availableLoaded: true,
)); ));
} catch (_) { },
emit(currentState.copyWith(availableLoading: false)); onError: (String errorKey) {
if (state is ShiftsLoaded) {
return (state as ShiftsLoaded).copyWith(availableLoading: false);
} }
return ShiftsError(errorKey);
},
);
} }
Future<void> _onLoadFindFirst( Future<void> _onLoadFindFirst(
@@ -137,15 +152,16 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
)); ));
} }
final currentState = final currentState = state is ShiftsLoaded ? state as ShiftsLoaded : null;
state is ShiftsLoaded ? state as ShiftsLoaded : null;
if (currentState != null && currentState.availableLoaded) return; if (currentState != null && currentState.availableLoaded) return;
if (currentState != null) { if (currentState != null) {
emit(currentState.copyWith(availableLoading: true)); emit(currentState.copyWith(availableLoading: true));
} }
try { await handleError(
emit: emit,
action: () async {
final availableResult = final availableResult =
await getAvailableShifts(const GetAvailableShiftsArguments()); await getAvailableShifts(const GetAvailableShiftsArguments());
final loadedState = state is ShiftsLoaded final loadedState = state is ShiftsLoaded
@@ -169,19 +185,23 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
availableLoading: false, availableLoading: false,
availableLoaded: true, availableLoaded: true,
)); ));
} catch (_) { },
onError: (String errorKey) {
if (state is ShiftsLoaded) { if (state is ShiftsLoaded) {
final current = state as ShiftsLoaded; return (state as ShiftsLoaded).copyWith(availableLoading: false);
emit(current.copyWith(availableLoading: false));
}
} }
return ShiftsError(errorKey);
},
);
} }
Future<void> _onLoadShiftsForRange( Future<void> _onLoadShiftsForRange(
LoadShiftsForRangeEvent event, LoadShiftsForRangeEvent event,
Emitter<ShiftsState> emit, Emitter<ShiftsState> emit,
) async { ) async {
try { await handleError(
emit: emit,
action: () async {
final myShiftsResult = await getMyShifts( final myShiftsResult = await getMyShifts(
GetMyShiftsArguments(start: event.start, end: event.end), GetMyShiftsArguments(start: event.start, end: event.end),
); );
@@ -209,9 +229,9 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
searchQuery: '', searchQuery: '',
jobType: 'all', jobType: 'all',
)); ));
} catch (_) { },
emit(const ShiftsError('Failed to load shifts')); onError: (String errorKey) => ShiftsError(errorKey),
} );
} }
Future<void> _onFilterAvailableShifts( Future<void> _onFilterAvailableShifts(
@@ -224,10 +244,10 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
add(LoadAvailableShiftsEvent()); add(LoadAvailableShiftsEvent());
return; return;
} }
// Optimistic update or loading indicator?
// Since it's filtering, we can just reload available.
try { await handleError(
emit: emit,
action: () async {
final result = await getAvailableShifts(GetAvailableShiftsArguments( final result = await getAvailableShifts(GetAvailableShiftsArguments(
query: event.query ?? currentState.searchQuery, query: event.query ?? currentState.searchQuery,
type: event.jobType ?? currentState.jobType, type: event.jobType ?? currentState.jobType,
@@ -238,9 +258,13 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
searchQuery: event.query ?? currentState.searchQuery, searchQuery: event.query ?? currentState.searchQuery,
jobType: event.jobType ?? currentState.jobType, jobType: event.jobType ?? currentState.jobType,
)); ));
} catch (_) { },
// Error handling if filter fails onError: (String errorKey) {
} // Stay on current state for filtering errors, maybe show a snackbar?
// For now just logging is enough via handleError mixin.
return currentState;
},
);
} }
} }
@@ -268,3 +292,4 @@ class ShiftsBloc extends Bloc<ShiftsEvent, ShiftsState> {
}).toList(); }).toList();
} }
} }