달력 "기록" 목록, 시간순으로 줄 세우기
달력에서 날짜를 눌렀을 때 뜨는 하단 시트의 기록 목록이 입력 순서로만 나열되던 문제를 기록 시각(HH:mm) 오름차순으로 정렬하도록 고쳤다.
무엇이 불편했나
달력 보기 버튼에서 기록을 고르고 날짜 칸을 탭하면 하단 시트에 그 날의 기록이 쭉 나온다.
같은 날 기록이 여러 건이면 정렬 기준이 DB에 들어간 순서(id)였던 탓에,
오전 기록이 오후 기록 밑에 깔려 나오는 등 실제 하루 흐름과 뒤섞여 보였다.
변경 전 / 후
같은 날 기록 4건 — 입력한 순서가 아니라 시간 순서로 보이도록.
변경 전 id 순
09:00아침 스트레칭1번째 입력
19:00저녁 운동2번째 입력
08:00모닝커피3번째 입력
13:30점심 미팅4번째 입력
변경 후 시간 순
08:00모닝커피
09:00아침 스트레칭
13:30점심 미팅
19:00저녁 운동
고친 곳
날짜 하나의 기록을 모두 가져오는 recordsOnDate()의
orderBy를 바꿨다. 시각이 있는 기록은 'HH:mm' 오름차순으로,
시각이 없는(종일·미지정) 기록은 맨 뒤로 보내고, 같은 시각이면 기존처럼 입력 순서를 유지한다.
// lib/db/app_db.dart — recordsOnDate() - orderBy: 'id' + orderBy: + "(event_time IS NULL OR event_time = '') ASC, event_time ASC, id ASC"
손대지 않은 곳
달력 칸 안의 작은 배지(기록이 2건 이상이면 "기록 ④"처럼 개수만 표시)는 순서가 화면에
드러나지 않아 칸 전개용 조회(calRecordsInRange())는 그대로 뒀다.
할일 목록 탭이나 전체기간 기록 조회처럼 이번 요청(달력 보기) 밖의 화면도 건드리지 않았다.
검증
- ✓
flutter analyze— No issues found. - · 시뮬레이터/기기에서 한 날짜에 시각이 다른 기록 여러 건을 넣어 실제 정렬 확인은 사용자 직접 진행.