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 init() async { // External final sharedPreferences = await SharedPreferences.getInstance(); getIt.registerSingleton(sharedPreferences); // Logger getIt.registerSingleton(AppLogger()); // Data sources getIt.registerLazySingleton( () => TaskRemoteDataSourceImpl(logger: getIt()), ); getIt.registerLazySingleton( () => SettingsLocalDataSourceImpl(sharedPreferences: getIt()), ); // Repositories getIt.registerLazySingleton( () => TaskRepositoryImpl(remoteDataSource: getIt(), logger: getIt()), ); // ViewModels getIt.registerFactory( () => DailyTasksViewModel(repository: getIt(), logger: getIt()), ); getIt.registerFactory( () => TaskFormViewModel(repository: getIt(), logger: getIt()), ); getIt.registerLazySingleton( () => SettingsViewModel(dataSource: getIt(), logger: getIt()), ); }