Skip to content

Commit

Permalink
feat: 클린 아키텍처 적용
Browse files Browse the repository at this point in the history
  • Loading branch information
junsuk5 committed Apr 17, 2024
1 parent 0f30b2d commit d09cb2b
Show file tree
Hide file tree
Showing 12 changed files with 29 additions and 13 deletions.
2 changes: 1 addition & 1 deletion lib/09_use_case/data/mapper/photo_mapper.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import '../dto/photo_result_dto.dart';
import '../model/photo.dart';
import '../../domain/model/photo.dart';

extension ToPhoto on Hits {
Photo toPhoto() {
Expand Down
4 changes: 2 additions & 2 deletions lib/09_use_case/data/repository/photo_repository_impl.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@

import 'package:learn_flutter_together/09_use_case/data/data_source/photo_data_source.dart';
import 'package:learn_flutter_together/09_use_case/data/mapper/photo_mapper.dart';
import 'package:learn_flutter_together/09_use_case/data/repository/photo_repository.dart';
import 'package:learn_flutter_together/09_use_case/domain/repository/photo_repository.dart';

import '../model/photo.dart';
import '../../domain/model/photo.dart';

class PhotoRepositoryImpl implements PhotoRepository {
final PhotoDataSource _photoDataSource;
Expand Down
File renamed without changes.
File renamed without changes.
12 changes: 12 additions & 0 deletions lib/09_use_case/domain/use_case/get_photos_use_case.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import '../model/photo.dart';
import '../repository/photo_repository.dart';

class GetPhotosUseCase {
final PhotoRepository _photoRepository;

GetPhotosUseCase(this._photoRepository);

Future<List<Photo>> execute(String query) async {
return (await _photoRepository.getPhotos(query)).take(3).toList();
}
}
7 changes: 5 additions & 2 deletions lib/09_use_case/main.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:learn_flutter_together/09_use_case/domain/use_case/get_photos_use_case.dart';
import 'package:learn_flutter_together/09_use_case/presentation/search_list/search_list_screen.dart';
import 'package:learn_flutter_together/09_use_case/presentation/search_list/search_list_view_model.dart';
import 'package:provider/provider.dart';
Expand All @@ -24,8 +25,10 @@ class MyApp extends StatelessWidget {
home: ChangeNotifierProvider(
// cnp
create: (_) => SearchListViewModel(
photoRepository: PhotoRepositoryImpl(
photoDataSource: PhotoDataSource(),
getPhotosUseCase: GetPhotosUseCase(
PhotoRepositoryImpl(
photoDataSource: PhotoDataSource(),
),
),
),
child: const SearchListScreen(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';

import '../../data/model/photo.dart';
import '../../domain/model/photo.dart';

class PhotoDetailScreen extends StatelessWidget {
final Photo photo;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';

import '../../../data/model/photo.dart';
import '../../../domain/model/photo.dart';

class ImageCardWidget extends StatelessWidget {
final Photo photo;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:freezed_annotation/freezed_annotation.dart';

import '../../data/model/photo.dart';
import '../../domain/model/photo.dart';

part 'search_list_state.freezed.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import 'package:flutter/material.dart';
import '../../data/repository/photo_repository.dart';
import 'package:learn_flutter_together/09_use_case/domain/use_case/get_photos_use_case.dart';
import '../../domain/repository/photo_repository.dart';
import 'search_list_state.dart';

class SearchListViewModel with ChangeNotifier {
final PhotoRepository _photoRepository;
final GetPhotosUseCase _getPhotosUseCase;

SearchListViewModel({
required PhotoRepository photoRepository,
}) : _photoRepository = photoRepository;
required GetPhotosUseCase getPhotosUseCase,
}) : _getPhotosUseCase = getPhotosUseCase;

SearchListState _state = const SearchListState();

Expand All @@ -18,7 +19,7 @@ class SearchListViewModel with ChangeNotifier {
notifyListeners();

_state = state.copyWith(
photos: await _photoRepository.getPhotos(query),
photos: await _getPhotosUseCase.execute(query),
isLoading: false,
);
notifyListeners();
Expand Down

0 comments on commit d09cb2b

Please sign in to comment.