chore: Refactor imports and update architecture package structure

Reorganized and clarified dependency sections in multiple pubspec.yaml files, grouping architecture and feature packages. Updated import statements in AuthRepositoryImpl for direct usage of types. Added missing dependencies to client authentication. Removed obsolete documentation and summary files from design_system and client home packages.
This commit is contained in:
Achintha Isuru
2026-01-22 12:28:10 -05:00
parent 7d3b4da8d4
commit 1b8a6466b0
11 changed files with 60 additions and 218 deletions

View File

@@ -1,133 +0,0 @@
# Client Home Feature - Architecture Refactor Summary
## ✅ Completed Refactor
The `packages/features/client/home` feature has been successfully refactored to fully comply with KROW Clean Architecture principles.
## 📋 Changes Made
### 1. Domain Layer Improvements
**Created:**
- `lib/src/domain/entities/home_dashboard_data.dart`
- Proper domain entity to replace raw `Map<String, dynamic>`
- Immutable, equatable data class
- Clear field definitions with documentation
**Updated:**
- `lib/src/domain/repositories/home_repository_interface.dart`
- Changed from `abstract class` to `abstract interface class`
- Return type changed from `Map<String, dynamic>` to `HomeDashboardData`
- `lib/src/domain/usecases/get_dashboard_data_usecase.dart`
- Return type updated to `HomeDashboardData`
### 2. Data Layer Improvements
**Updated:**
- `lib/src/data/repositories_impl/home_repository_impl.dart`
- Returns `HomeDashboardData` entity instead of raw map
- Properly typed mock data
### 3. Presentation Layer Refactor
**Major Changes to `client_home_page.dart`:**
- ✅ Converted from `StatefulWidget` to `StatelessWidget`
- ✅ Removed local state management (moved to BLoC)
- ✅ BLoC lifecycle managed by `BlocProvider.create`
- ✅ All event dispatching uses `BlocProvider.of<ClientHomeBloc>(context)`
- ✅ Removed direct BLoC instance storage
- ✅ Fixed deprecated `withOpacity``withValues(alpha:)`
**Updated `client_home_state.dart`:**
- Replaced individual primitive fields with `HomeDashboardData` entity
- Simplified state structure
- Cleaner `copyWith` implementation
**Updated `client_home_bloc.dart`:**
- Simplified event handler to use entity directly
- No more manual field extraction from maps
**Widget Updates:**
- `coverage_widget.dart`: Now accepts typed parameters
- All widgets: Fixed deprecated `withOpacity` calls
- `shift_order_form_sheet.dart`: Fixed deprecated `value``initialValue`
## 🎯 Architecture Compliance
### ✅ Clean Architecture Rules
- [x] Domain layer is pure Dart (entities only)
- [x] Repository interfaces in domain, implementations in data
- [x] Use cases properly delegate to repositories
- [x] Presentation layer depends on domain abstractions
- [x] No feature-to-feature imports
### ✅ Presentation Rules
- [x] Page is `StatelessWidget`
- [x] State managed by BLoC
- [x] No business logic in page
- [x] BLoC lifecycle properly managed
- [x] Named parameters used throughout
### ✅ Code Quality
- [x] No deprecation warnings
- [x] All files have doc comments
- [x] Consistent naming conventions
- [x] `flutter analyze` passes with 0 issues
## 📊 Before vs After
### Before:
```dart
// StatefulWidget with local state
class ClientHomePage extends StatefulWidget {
late final ClientHomeBloc _homeBloc;
@override
void initState() {
_homeBloc = Modular.get<ClientHomeBloc>();
}
}
// Raw maps in domain
Future<Map<String, dynamic>> getDashboardData();
// Manual field extraction
weeklySpending: data['weeklySpending'] as double?,
```
### After:
```dart
// StatelessWidget, BLoC-managed
class ClientHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocProvider<ClientHomeBloc>(
create: (context) => Modular.get<ClientHomeBloc>()..add(ClientHomeStarted()),
// ...
);
}
}
// Typed entities
Future<HomeDashboardData> getDashboardData();
// Direct entity usage
dashboardData: data,
```
## 🔍 Reference Alignment
The refactored code now matches the structure of `packages/features/staff/authentication`:
- StatelessWidget pages
- BLoC-managed state
- Typed domain entities
- Clean separation of concerns
## 🚀 Next Steps
The feature is now production-ready and follows all architectural guidelines. Future enhancements should:
1. Add unit tests for use cases
2. Add widget tests for pages
3. Add integration tests for complete flows
4. Consider extracting reusable widgets to design_system if used across features

View File

@@ -16,6 +16,7 @@ dependencies:
equatable: ^2.0.5
lucide_icons: ^0.257.0
# Architecture Packages
design_system:
path: ../../../design_system
core_localization: