


ViewModel, WidgetEntity : 데이터 모델 클래스 (예. User 클래스)UseCase : Entity로 해야할 일 정의(예. 회원가입, 정보수정)Repository : 데이터 처리 방식 결정, Entity 전달DataSource : 네트워크 통신, 내부DB와 연동 등을 통해서 데이터 CRUD
유지보수가 용이함
테스트가 용이함
의존성이 단방향이기 때문에 가짜데이터로 테스트 가능 - Mocking
Flutter 에서 적용

View : 검색하기 버튼ViewModel : 검색하기 요청해서 상태 업데이트UseCase : 검색하기 비즈니스 로직Entity : 책 정보DataSource : OpenAPI와의 통신Repository : DataSource를 통하여 책정보 가져오기





ai 패키지 : flutter pub add google_generative_ai
(제미나이 SDK)
- API Key를 소스코드에 직접 넣지 않을거에요~!
- Github Repository에 업로드 방지
- 따로 관리하면 API키 변경 시 코드 수정 불필요
- 개발환경, 배포환경 각각 다른 API KEY로 실행가능
- 시스템 환경변수에 등록하지 않고 사용하기 별도의 파일로 관리할거에요
--dart-define-from-file 옵션을 사용하여 .env 파일을 지정하면, 이 파일에 정의된 변수들이 애플리케이션에 전달{
"version": "0.2.0",
"configurations": [
{
"name": "flutter_env",
"request": "launch",
"type": "dart",
"toolArgs": ["--dart-define-from-file", "./.env"]
}
]
}
String.fromEnvironment('GEMINI_API_KEY');
