AgendaTasks/lib/core/di/injection_container.dart
m3mo cb308bbf68 Initial project setup with Clean Architecture
- Flutter frontend with Provider state management
- FastAPI backend with SQLAlchemy ORM
- Internationalization support (EN/DE)
- Clean Architecture folder structure
- GoRouter for navigation
- GetIt for dependency injection
2026-02-02 16:43:37 +01:00

47 lines
1.7 KiB
Dart

import 'package:get_it/get_it.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../features/settings/presentation/viewmodels/settings_viewmodel.dart';
import '../../features/tasks/presentation/viewmodels/daily_tasks_viewmodel.dart';
import '../../features/tasks/presentation/viewmodels/task_form_viewmodel.dart';
import '../../features/tasks/domain/repositories/task_repository.dart';
import '../../features/tasks/data/repositories/task_repository_impl.dart';
import '../../features/tasks/data/datasources/task_remote_datasource.dart';
import '../../features/settings/data/settings_local_datasource.dart';
import '../logging/app_logger.dart';
final getIt = GetIt.instance;
Future<void> init() async {
// External
final sharedPreferences = await SharedPreferences.getInstance();
getIt.registerSingleton<SharedPreferences>(sharedPreferences);
// Logger
getIt.registerSingleton<AppLogger>(AppLogger());
// Data sources
getIt.registerLazySingleton<TaskRemoteDataSource>(
() => TaskRemoteDataSourceImpl(logger: getIt()),
);
getIt.registerLazySingleton<SettingsLocalDataSource>(
() => SettingsLocalDataSourceImpl(sharedPreferences: getIt()),
);
// Repositories
getIt.registerLazySingleton<TaskRepository>(
() => TaskRepositoryImpl(remoteDataSource: getIt(), logger: getIt()),
);
// ViewModels
getIt.registerFactory<DailyTasksViewModel>(
() => DailyTasksViewModel(repository: getIt(), logger: getIt()),
);
getIt.registerFactory<TaskFormViewModel>(
() => TaskFormViewModel(repository: getIt(), logger: getIt()),
);
getIt.registerLazySingleton<SettingsViewModel>(
() => SettingsViewModel(dataSource: getIt(), logger: getIt()),
);
}