이벤트 반복 설정 구현 — 매주, 매달 반복 어떻게 할까?

2025. 6. 4. 09:00·Flutter/Flutter 캘린더 앱 만들기
728x90
반응형

매주 월요일 회의, 매달 1일 결제일, 매년 생일.
캘린더 앱에서 반복되는 일정은 피할 수 없는 기능이다.

이번 글에서는 Flutter에서 “매주”, “매달” 반복되는 이벤트를 어떻게 구현할 수 있을지 정리한다.


📌 반복 이벤트의 구조 설계

이벤트 객체에 반복 유형을 추가한다:

enum RepeatType { none, daily, weekly, monthly }

class Event {
  final String title;
  final DateTime date;
  final RepeatType repeat;
  bool isDone;

  Event({
    required this.title,
    required this.date,
    this.repeat = RepeatType.none,
    this.isDone = false,
  });
}

반복 없는 기본 이벤트 외에 weekly, monthly 등 다양한 반복 패턴을 명시할 수 있다.


📅 table_calendar에서 반복 처리하기

eventLoader에서 반복 조건을 고려하여 표시 이벤트를 확장한다.

List<Event> getEventsForDay(DateTime day) {
  return allEvents.where((event) {
    if (event.repeat == RepeatType.none) {
      return isSameDay(event.date, day);
    } else if (event.repeat == RepeatType.weekly) {
      return event.date.weekday == day.weekday;
    } else if (event.repeat == RepeatType.monthly) {
      return event.date.day == day.day;
    }
    return false;
  }).toList();
}

- 매주 반복: 요일이 같으면 해당 주에 표시
- 매달 반복: 일(day)이 같으면 매달 표시


🧾 반복 설정 UI 만들기

DropdownButton<RepeatType>(
  value: selectedRepeat,
  onChanged: (value) {
    setState(() {
      selectedRepeat = value!;
    });
  },
  items: RepeatType.values.map((type) {
    return DropdownMenuItem(
      value: type,
      child: Text(type.toString().split('.').last),
    );
  }).toList(),
)

이벤트 작성 시 반복 유형을 선택할 수 있도록 Dropdown을 제공한다.


📌 저장 구조 팁

  • 반복 이벤트는 로컬 DB 저장 시 repeat 필드를 함께 저장
  • 반복 해제를 원할 경우 endDate 추가 고려
  • 특정 날짜만 제외하기(예외 처리)는 고급 기능에서 다루자

🧘 마무리하며

반복되는 일정은 당연히 있어야 할 기능이지만, 구조적으로는 꽤 까다롭다.
Flutter로 만드는 캘린더 앱에서도 단순히 반복 조건만 잘 정리해두면 유연하게 관리할 수 있다.

일정은 반복되지만, 구현은 깔끔하게.

✍️ 이 글은 터미널 밖으로 나온 개발자의 Flutter 캘린더 앱 만들기 여정입니다.

728x90
반응형

'Flutter > Flutter 캘린더 앱 만들기' 카테고리의 다른 글

서버와 동기화 — Google Calendar API 연동하기  (0) 2025.06.06
다크 모드 캘린더 디자인 적용  (0) 2025.06.05
할 일 완료 체크 및 삭제 기능 추가  (2) 2025.06.03
이벤트 알림 기능 — Flutter Local Notification 활용하기  (0) 2025.06.02
오늘 날짜 강조 및 마커 표시 기능 구현하기  (1) 2025.06.01
'Flutter/Flutter 캘린더 앱 만들기' 카테고리의 다른 글
  • 서버와 동기화 — Google Calendar API 연동하기
  • 다크 모드 캘린더 디자인 적용
  • 할 일 완료 체크 및 삭제 기능 추가
  • 이벤트 알림 기능 — Flutter Local Notification 활용하기
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    openweather
    flutter개발
    모바일앱개발
    fluttertips
    뉴스앱
    코드를걷는사람
    flutterui
    rails보안
    정적사이트
    RubyOnRails
    table_calendar
    flutter게시판
    날씨앱
    다크모드
    감성앱
    flutter앱개발
    Flutter
    ActiveRecord
    UIUX
    캘린더앱
    메모앱
    flutter상태관리
    백엔드개발
    UI디자인
    Nextjs
    개발블로그
    flutter디자인
    북마크기능
    flutter기초
    Firebase
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
이벤트 반복 설정 구현 — 매주, 매달 반복 어떻게 할까?
상단으로

티스토리툴바