하루계획 변경 반영

Flutter · 맥 반영

하루계획 — 맥에 반영할 변경 2건

day_plan_appl_app에 적용한 최근 변경입니다. 맥으로 옮긴 사본에 아래 코드를 반영하세요. 둘 다 flutter analyze 통과.

1반복(매일·매주) 일정이 사라지던 버그
lib/logic/recurrence.dart
2상세 편집기 유형 선택기(할일/일정/기록)
lib/widgets/todo_edit_sheet.dart
1

반복 일정이 사라지던 문제

recurrence.dart

증상 — 일정에 매일/매주 반복을 걸면 발생일에 안 나타남(“삭제된 것”처럼). 매월/매년은 정상.

원인 — occurrencesIn()이 매일/매주 반복을 “오늘 한 칸”에만 채우도록 돼 있었고(할일 기준), 이게 일정(onCalendar)에도 적용돼 오늘이 발생일이 아니면 아무 날짜에도 안 찍힘. 표준 조회는 반복 항목을 제외하고 발생분으로만 표시하므로 완전히 사라짐.

변경 전
if (unit == 'day' || unit == 'week') {
  if (t0 != null &&
      !t0.isBefore(start) &&
      !t0.isAfter(end) &&
      occursOn(base, unit, iv, t0)) {
    out.putIfAbsent(_iso(t0), () => []).add(t);
  }
  continue;
}
변경 후
if ((unit == 'day' || unit == 'week') && !t.onCalendar) {
  if (t0 != null &&
      !t0.isBefore(start) &&
      !t0.isAfter(end) &&
      occursOn(base, unit, iv, t0)) {
    out.putIfAbsent(_iso(t0), () => []).add(t);
  }
  continue;
}
recurrence.dart · occurrencesIn() 전체 교체
웹(서버)도 동일 반영 — mdl_recur.py의 occurrences_in()에 and not t.get('on_calendar'). 맥 작업은 Flutter 쪽만.
2

상세 편집기 유형 선택기

todo_edit_sheet.dart

폰 편집기 신규 추가 시 상단에 할일 / 일정 / 기록 선택 칩을 추가. 선택하면 그 유형의 폼으로 전환됩니다. 선택기는 할일·일정·기록 모든 유형에 노출(_buildTodo·_buildEventRecord 둘 다 — 아래 B·C).

동작 — kind만 바꾸면 build()가 해당 폼(_buildTodo / _buildEventRecord)으로 전환. 제목·메모는 컨트롤러(_title/_note)라 자동 보존. 기존 ‘일정만/기록만’ 버튼은 선택기로 대체(삭제). 저장은 _saveByKind()가 처리하므로 _saveEventOnly/_saveRecordOnly는 삭제.

todo_edit_sheet.dart · A~E 반영
day_plan_appl_app의 편집기엔 상단 AdMob 배너가 있습니다 — (B)의 선택기는 배너 다음, 제목 앞에 넣으세요.
웹과의 차이(참고): 웹 콤보는 “그 날짜의 일정보기/기록보기/할일보기 클릭”처럼 달력 보기 모드를 전환합니다. 폰 편집기는 모달이라 추가할 항목의 유형(kind/폼)만 전환 — 플랫폼 특성상 등가지만 기전이 다릅니다. 달력 뷰 전환은 기존 일정/기록/할일 보기 버튼이 담당.