컨두잇 코딩 테스트과제 입니다.
- 버전: Flutter 3.35.6, Dart 3.9.2
- 상태관리: riverpod
- 로컬 데이타베이스: sqflite
- 이용사유:
- isar - 속도 강점. sqflite - 복잡한 구조처리 강점
- 간단한 사용에선 isar가 좀 더 유리하다고 판단.
- 사실 익숙한 sqflite 보다는 조금 덜 익숙하지만 사용해보고 싶어서 isar 선택하려고 했으나, riverpod의 버전과 충돌이 발생되어 sqflite를 사용하였습니다.
- 이용사유:
Because riverpod_generator >=2.6.4 <3.0.0-dev.2 depends on source_gen ^2.0.0 and riverpod_generator >=2.6.1 <2.6.4 depends on analyzer ^6.7.0, riverpod_generator >=2.6.1 <3.0.0-dev.2 requires source_gen ^2.0.0 or analyzer ^6.7.0.
And because isar_generator >=3.0.1 depends on analyzer >=4.6.0 <6.0.0 and isar_generator >=3.0.0-dev.0 depends on source_gen ^1.2.2, isar_generator >=3.0.1 is incompatible with riverpod_generator >=2.6.1 <3.0.0-dev.2.
So, because todaymemo depends on both riverpod_generator ^2.6.2 and isar_generator ^3.1.0+1, version solving failed.
- 메모 리스트
- 메모 작성, 수정, 삭제
- 메모 검색
최대한 클린 아키텍처에 맞게 구조를 잡았는데, 기준을 Feature로 잡아야 하나 고민했으나, 현재로선 기능이 하나이다보니 data, domain, presentation을 밖으로 뺐습니다.
todayMemo/lib
├── core
│ ├── error
│ ├── usecases
│ └── utils
├── data
│ ├── datasources
│ ├── models
│ └── repositories
├── domain
│ ├── entities
│ ├── repositories
│ └── usecases
├── presentation
│ ├── providers
│ ├── screens
│ └── widgets
├── index.dart
└── main.dart
- 메모 리스트 화면
- 메모 목록 표시(제목, 태그, 마감일, 진행률)
- 검색버튼 - 클릭 시 검색창 노출되어 입력하면 제목, 내용에서 검색
- 필터버튼 - 클릭 시 태그 필터창 노출
- 정렬기능 - 기본, 마감일, 진행률 중 선택할 수 있는 버튼
- 메모작성버튼 - 클릭 시 메모작성 화면으로 이동
- 메모 선택 시 메모 상세화면으로 이동
- 메모 상세화면
- 제목 입력
- 내용 입력
- 태그 입력
- 마감일
- 진향률 - 숫자 및 슬라이더
- 수정버튼 - 터치 시 수정화면으로
- 삭제버튼 - 터치 시 삭제 후 리스트화면으로
- 메모 작성(수정)화면
- 제목 입력
- 내용입력
- 태그 입력
- 마감일 지정
- 진행완료 지정
- 기타
- 다크테마 지원
태그의 경우는 자유입력형태로 입력하도록 했습니다.
CREATE TABLE memos (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL,
content TEXT NOT NULL,
tags TEXT,
completed INTEGER NOT NULL DEFAULT 0,
due_date TEXT
)
- 코드를 git에서 clone 후
- flutter 패키지 가져오기
flutter pub get
- 빌드 실행
dart run build_runner build --delete-conflicting-outputs
- 실행
flutter run
- Android Studio의 애뮬레이터를 실행하거나, adb를 통해 기기가 연결되어있어야 실행할 수 있습니다.