# Dependency Injection Documentation Index This directory contains the complete Riverpod dependency injection setup for the warehouse management application. ## File Overview ### 📄 `providers.dart` (18 KB) **Main dependency injection setup file** Contains all Riverpod providers organized by feature: - Core Providers (SecureStorage, ApiClient) - Auth Feature Providers - Warehouse Feature Providers - Products Feature Providers - Usage examples embedded in comments **Use this file**: Import in your app to access all providers ```dart import 'package:minhthu/core/di/providers.dart'; ``` --- ### 📖 `README.md` (13 KB) **Comprehensive setup and usage guide** Topics covered: - Architecture overview - Provider categories explanation - Basic setup instructions - Common usage patterns - Feature implementation examples - Advanced usage patterns - Best practices - Debugging tips - Testing strategies **Use this guide**: For understanding the overall DI architecture and learning how to use providers --- ### 📋 `QUICK_REFERENCE.md` (12 KB) **Quick lookup for common operations** Contains: - Essential provider code snippets - Widget setup patterns - Common patterns for auth, warehouse, products - Key methods by feature - Provider types explanation - Cheat sheet table - Complete example flows - Troubleshooting tips **Use this guide**: When you need quick code examples or forgot syntax --- ### 🏗️ `ARCHITECTURE.md` (19 KB) **Detailed architecture documentation** Includes: - Visual dependency graphs - Layer-by-layer breakdown - Data flow diagrams - Provider types deep dive - Best practices by layer - Testing strategies - Performance optimization - Common patterns - Architecture benefits summary **Use this guide**: For understanding the design decisions and architecture patterns --- ### 🔄 `MIGRATION_GUIDE.md` (11 KB) **Guide for migrating from other DI solutions** Covers: - GetIt to Riverpod migration - Key differences comparison - Step-by-step migration process - Common patterns migration - Testing migration - State management migration - Benefits of migration - Common pitfalls and solutions - Incremental migration strategy **Use this guide**: If migrating from GetIt or other DI solutions --- ## Quick Start ### 1. Setup App ```dart void main() { runApp( const ProviderScope( child: MyApp(), ), ); } ``` ### 2. Use in Widgets ```dart class MyPage extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final isAuth = ref.watch(isAuthenticatedProvider); return Container(); } } ``` ### 3. Access Providers ```dart // Watch (reactive) final data = ref.watch(someProvider); // Read (one-time) final data = ref.read(someProvider); // Call method ref.read(authProvider.notifier).login(user, pass); ``` ## Documentation Roadmap ### For New Developers 1. Start with [README.md](./README.md) - Understand the basics 2. Try examples in [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) 3. Study [ARCHITECTURE.md](./ARCHITECTURE.md) - Understand design 4. Keep [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) handy for coding ### For Team Leads 1. Review [ARCHITECTURE.md](./ARCHITECTURE.md) - Architecture decisions 2. Share [README.md](./README.md) with team 3. Use [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) for code reviews 4. Reference [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md) if changing DI ### For Testing 1. Check testing sections in [README.md](./README.md) 2. Review testing strategy in [ARCHITECTURE.md](./ARCHITECTURE.md) 3. See test examples in [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md) ## All Available Providers ### Core Infrastructure - `secureStorageProvider` - Secure storage singleton - `apiClientProvider` - HTTP client with auth ### Authentication - `authProvider` - Main auth state - `isAuthenticatedProvider` - Auth status boolean - `currentUserProvider` - Current user data - `isAuthLoadingProvider` - Loading state - `authErrorProvider` - Error message - `loginUseCaseProvider` - Login business logic - `logoutUseCaseProvider` - Logout business logic - `checkAuthStatusUseCaseProvider` - Check auth status - `getCurrentUserUseCaseProvider` - Get current user ### Warehouse - `warehouseProvider` - Main warehouse state - `warehousesListProvider` - List of warehouses - `selectedWarehouseProvider` - Selected warehouse - `isWarehouseLoadingProvider` - Loading state - `hasWarehousesProvider` - Has warehouses loaded - `hasWarehouseSelectionProvider` - Has selection - `warehouseErrorProvider` - Error message - `getWarehousesUseCaseProvider` - Fetch warehouses ### Products - `productsProvider` - Main products state - `productsListProvider` - List of products - `operationTypeProvider` - Import/Export type - `productsWarehouseIdProvider` - Warehouse ID - `productsWarehouseNameProvider` - Warehouse name - `isProductsLoadingProvider` - Loading state - `hasProductsProvider` - Has products loaded - `productsCountProvider` - Products count - `productsErrorProvider` - Error message - `getProductsUseCaseProvider` - Fetch products ## Key Features ✅ **Type-Safe**: Compile-time dependency checking ✅ **Reactive**: Automatic UI updates on state changes ✅ **Testable**: Easy mocking and overrides ✅ **Clean Architecture**: Clear separation of concerns ✅ **Well-Documented**: Comprehensive guides and examples ✅ **Production-Ready**: Used in real warehouse app ✅ **Scalable**: Easy to add new features ✅ **Maintainable**: Clear structure and patterns ## Code Statistics - **Total Providers**: 40+ providers - **Features Covered**: Auth, Warehouse, Products - **Lines of Code**: ~600 LOC in providers.dart - **Documentation**: ~55 KB total documentation - **Test Coverage**: Full testing examples provided ## Support & Resources ### Internal Resources - [providers.dart](./providers.dart) - Source code - [README.md](./README.md) - Main documentation - [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) - Quick lookup - [ARCHITECTURE.md](./ARCHITECTURE.md) - Architecture guide - [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md) - Migration help ### External Resources - [Riverpod Official Docs](https://riverpod.dev) - [Flutter State Management](https://docs.flutter.dev/development/data-and-backend/state-mgmt) - [Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html) ## Version History - **v1.0** (2024-10-27) - Initial complete setup - Core providers (Storage, API) - Auth feature providers - Warehouse feature providers - Products feature providers - Comprehensive documentation ## Contributing When adding new features: 1. Follow the existing pattern (Data → Domain → Presentation) 2. Add providers in `providers.dart` 3. Update documentation 4. Add usage examples 5. Write tests ## Questions? If you have questions about: - **Usage**: Check [QUICK_REFERENCE.md](./QUICK_REFERENCE.md) - **Architecture**: Check [ARCHITECTURE.md](./ARCHITECTURE.md) - **Migration**: Check [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md) - **Testing**: Check testing sections in docs - **General**: Check [README.md](./README.md) --- **Last Updated**: October 27, 2024 **Status**: Production Ready ✅ **Maintained By**: Development Team