|
| 1 | +import 'package:data_connection_checker/data_connection_checker.dart'; |
| 2 | +import 'package:get_it/get_it.dart'; |
| 3 | +import 'package:http/http.dart' as http; |
| 4 | +import 'package:shared_preferences/shared_preferences.dart'; |
| 5 | + |
| 6 | +import 'core/network/network_info.dart'; |
| 7 | +import 'core/util/input_converter.dart'; |
| 8 | +import 'features/number_trivia/data/datasources/number_trivia_local_data_source.dart'; |
| 9 | +import 'features/number_trivia/data/datasources/number_trivia_remote_data_source.dart'; |
| 10 | +import 'features/number_trivia/data/repositories/number_trivia_repository_impl.dart'; |
| 11 | +import 'features/number_trivia/domain/repositories/number_trivia_repository.dart'; |
| 12 | +import 'features/number_trivia/domain/usecases/get_concrete_number_trivia.dart'; |
| 13 | +import 'features/number_trivia/domain/usecases/get_random_number_trivia.dart'; |
| 14 | +import 'features/number_trivia/presentation/bloc/number_trivia_bloc.dart'; |
| 15 | + |
| 16 | +final sl = GetIt.instance; |
| 17 | + |
| 18 | +Future<void> init() async { |
| 19 | + //! Features - Number Trivia |
| 20 | + // Bloc |
| 21 | + sl.registerFactory( |
| 22 | + () => NumberTriviaBloc( |
| 23 | + concrete: sl(), |
| 24 | + inputConverter: sl(), |
| 25 | + random: sl(), |
| 26 | + ), |
| 27 | + ); |
| 28 | + |
| 29 | + // Use cases |
| 30 | + sl.registerLazySingleton(() => GetConcreteNumberTrivia(sl())); |
| 31 | + sl.registerLazySingleton(() => GetRandomNumberTrivia(sl())); |
| 32 | + |
| 33 | + // Repository |
| 34 | + sl.registerLazySingleton<NumberTriviaRepository>( |
| 35 | + () => NumberTriviaRepositoryImpl( |
| 36 | + localDataSource: sl(), |
| 37 | + networkInfo: sl(), |
| 38 | + remoteDataSource: sl(), |
| 39 | + ), |
| 40 | + ); |
| 41 | + |
| 42 | + // Data sources |
| 43 | + sl.registerLazySingleton<NumberTriviaRemoteDataSource>( |
| 44 | + () => NumberTriviaRemoteDataSourceImpl(client: sl()), |
| 45 | + ); |
| 46 | + |
| 47 | + sl.registerLazySingleton<NumberTriviaLocalDataSource>( |
| 48 | + () => NumberTriviaLocalDataSourceImpl(sharedPreferences: sl()), |
| 49 | + ); |
| 50 | + |
| 51 | + //! Core |
| 52 | + sl.registerLazySingleton(() => InputConverter()); |
| 53 | + sl.registerLazySingleton<NetworkInfo>(() => NetworkInfoImpl(sl())); |
| 54 | + |
| 55 | + //! External |
| 56 | + final sharedPreferences = await SharedPreferences.getInstance(); |
| 57 | + sl.registerLazySingleton(() => sharedPreferences); |
| 58 | + sl.registerLazySingleton(() => http.Client()); |
| 59 | + sl.registerLazySingleton(() => DataConnectionChecker()); |
| 60 | +} |
0 commit comments