Skip to content

Commit

Permalink
feat: integrate injectable for dependency management
Browse files Browse the repository at this point in the history
  • Loading branch information
jjoonleo committed Jan 1, 2025
1 parent d63da13 commit 51b5190
Show file tree
Hide file tree
Showing 17 changed files with 38 additions and 56 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,5 @@ app.*.map.json
/android/app/release

*.g.dart
*.mocks.dart
*.mocks.dart
*.config.dart
2 changes: 2 additions & 0 deletions lib/core/database/database.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:drift/drift.dart';
import 'package:drift_flutter/drift_flutter.dart';
import 'package:injectable/injectable.dart';
import 'package:on_time_front/core/utils/json_converters/duration_json_converters.dart';
import 'package:on_time_front/data/daos/place_dao.dart';
import 'package:on_time_front/data/daos/preparation_schedule_dao.dart';
Expand All @@ -16,6 +17,7 @@ import 'package:uuid/uuid.dart';

part 'database.g.dart';

@Singleton()
@DriftDatabase(tables: [
Places,
Schedules,
Expand Down
12 changes: 12 additions & 0 deletions lib/core/di/di_setup.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import 'package:get_it/get_it.dart';
import 'package:injectable/injectable.dart';
import 'di_setup.config.dart';

final getIt = GetIt.instance;

@InjectableInit(
initializerName: 'init', // default
preferRelativeImports: true, // default
asExtension: true, // default
)
void configureDependencies() => getIt.init();
2 changes: 0 additions & 2 deletions lib/core/dio/api_response.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import 'package:json_annotation/json_annotation.dart';

class ApiResponse<T> {
final String status;
final T data;
Expand Down
2 changes: 2 additions & 0 deletions lib/core/dio/app_dio.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import 'package:dio/dio.dart';
import 'package:dio/io.dart';
import 'package:injectable/injectable.dart';
import 'package:on_time_front/core/dio/interceptors/logger_interceptor.dart';

@Injectable(as: Dio)
class AppDio with DioMixin implements Dio {
AppDio() {
httpClientAdapter = IOHttpClientAdapter();
Expand Down
13 changes: 0 additions & 13 deletions lib/core/dio/riverpod.dart

This file was deleted.

2 changes: 2 additions & 0 deletions lib/data/data_sources/preparation_local_data_source.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:injectable/injectable.dart';
import 'package:on_time_front/core/database/database.dart';
import 'package:on_time_front/domain/entities/preparation_entity.dart';
import 'package:on_time_front/domain/entities/preparation_step_entity.dart';
Expand All @@ -20,6 +21,7 @@ abstract interface class PreparationLocalDataSource {
String preparationStepId);
}

@Injectable(as: PreparationLocalDataSource)
class PreparationLocalDataSourceImpl implements PreparationLocalDataSource {
final AppDatabase appDatabase;

Expand Down
2 changes: 2 additions & 0 deletions lib/data/data_sources/preparation_remote_data_source.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:dio/dio.dart';
import 'package:injectable/injectable.dart';

import 'package:on_time_front/core/constants/endpoint.dart';

Expand Down Expand Up @@ -28,6 +29,7 @@ abstract interface class PreparationRemoteDataSource {
String preparationStepId);
}

@Injectable(as: PreparationRemoteDataSource)
class PreparationRemoteDataSourceImpl implements PreparationRemoteDataSource {
final Dio dio;

Expand Down
19 changes: 0 additions & 19 deletions lib/data/data_sources/riverpod.dart

This file was deleted.

2 changes: 2 additions & 0 deletions lib/data/data_sources/schedule_local_data_source.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:injectable/injectable.dart';
import 'package:on_time_front/core/database/database.dart';
import 'package:on_time_front/domain/entities/schedule_entity.dart';

Expand All @@ -14,6 +15,7 @@ abstract interface class ScheduleLocalDataSource {
Future<void> deleteSchedule(ScheduleEntity scheduleEntity);
}

@Injectable(as: ScheduleLocalDataSource)
class ScheduleLocalDataSourceImpl implements ScheduleLocalDataSource {
final AppDatabase appDatabase;

Expand Down
2 changes: 2 additions & 0 deletions lib/data/data_sources/schedule_remote_data_source.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:dio/dio.dart';
import 'package:injectable/injectable.dart';
import 'package:on_time_front/core/constants/endpoint.dart';

import 'package:on_time_front/data/models/create_schedule_request_model.dart';
Expand All @@ -20,6 +21,7 @@ abstract interface class ScheduleRemoteDataSource {
Future<void> deleteSchedule(ScheduleEntity schedule);
}

@Injectable(as: ScheduleRemoteDataSource)
class ScheduleRemoteDataSourceImpl implements ScheduleRemoteDataSource {
final Dio dio;
ScheduleRemoteDataSourceImpl(this.dio);
Expand Down
2 changes: 2 additions & 0 deletions lib/data/repositories/preparation_repository_impl.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'dart:async';

import 'package:injectable/injectable.dart';
import 'package:on_time_front/data/data_sources/preparation_local_data_source.dart';
import 'package:on_time_front/data/data_sources/preparation_remote_data_source.dart';

Expand All @@ -8,6 +9,7 @@ import 'package:on_time_front/domain/entities/preparation_step_entity.dart';

import 'package:on_time_front/domain/repositories/preparation_repository.dart';

@Singleton(as: PreparationRepository)
class PreparationRepositoryImpl implements PreparationRepository {
final PreparationRemoteDataSource preparationRemoteDataSource;
final PreparationLocalDataSource preparationLocalDataSource;
Expand Down
17 changes: 0 additions & 17 deletions lib/data/repositories/riverpod.dart

This file was deleted.

2 changes: 2 additions & 0 deletions lib/data/repositories/schedule_repository_impl.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import 'dart:async';

import 'package:injectable/injectable.dart';
import 'package:on_time_front/data/data_sources/schedule_local_data_source.dart';
import 'package:on_time_front/data/data_sources/schedule_remote_data_source.dart';
import 'package:on_time_front/domain/entities/schedule_entity.dart';

import 'package:on_time_front/domain/repositories/schedule_repository.dart';
import 'package:rxdart/subjects.dart';

@Singleton(as: ScheduleRepository)
class ScheduleRepositoryImpl implements ScheduleRepository {
final ScheduleLocalDataSource scheduleLocalDataSource;
final ScheduleRemoteDataSource scheduleRemoteDataSource;
Expand Down
2 changes: 2 additions & 0 deletions lib/domain/use-cases/create_schedule_with_place_use_case.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import 'package:injectable/injectable.dart';
import 'package:on_time_front/domain/entities/schedule_entity.dart';
import 'package:on_time_front/domain/repositories/schedule_repository.dart';

@injectable
class CreateScheduleWithPlaceUseCase {
final ScheduleRepository _scheduleRepository;

Expand Down
5 changes: 3 additions & 2 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:on_time_front/core/di/di_setup.dart';
import 'package:on_time_front/presentation/shared/router/go_router.dart';
import 'package:on_time_front/presentation/shared/theme/theme.dart';

void main() async {
runApp(const ProviderScope(child: MyApp()));
configureDependencies();
runApp(MyApp());
WidgetsFlutterBinding.ensureInitialized();
}

Expand Down
5 changes: 3 additions & 2 deletions lib/presentation/home/screens/home_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ import 'package:flutter/scheduler.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/svg.dart';
import 'package:go_router/go_router.dart';
import 'package:on_time_front/data/repositories/riverpod.dart';
import 'package:on_time_front/core/di/di_setup.dart';
import 'package:on_time_front/domain/entities/place_entity.dart';
import 'package:on_time_front/domain/entities/schedule_entity.dart';
import 'package:on_time_front/domain/repositories/schedule_repository.dart';
import 'package:on_time_front/presentation/home/components/home_app_bar.dart';
import 'package:on_time_front/presentation/home/components/todays_schedule_tile.dart';
import 'package:on_time_front/presentation/home/components/week_calendar.dart';
Expand Down Expand Up @@ -170,7 +171,7 @@ class _HomeScreenState extends ConsumerState<HomeScreen>
),
floatingActionButton: FloatingActionButton(
onPressed: () {
final scheduleRepository = ref.read(scheduleRepositoryProvider);
final scheduleRepository = getIt.get<ScheduleRepository>();
scheduleRepository.createSchedule(
ScheduleEntity(
id: Uuid().v7(),
Expand Down

0 comments on commit 51b5190

Please sign in to comment.