Flutter 캘린더 UI 구현 — table_calendar 패키지로 시작하기

2025. 5. 29. 16:49·Flutter/Flutter 캘린더 앱 만들기
728x90
반응형

Flutter로 일정 관리 앱을 만들고 싶다면, 캘린더 UI 구현부터 시작해야 한다.
이번 글에서는 가장 많이 쓰이는 table_calendar 패키지를 이용해 기본적인 달력 UI를 구성하고, 날짜 선택, 이벤트 연결을 위한 준비를 해본다.


📦 패키지 설치

// pubspec.yaml
dependencies:
  table_calendar: ^3.0.9
  intl: ^0.18.1

table_calendar는 직관적인 API를 제공하며, intl은 날짜 포맷팅에 사용된다.


📅 기본 캘린더 위젯 구성

TableCalendar(
  focusedDay: DateTime.now(),
  firstDay: DateTime.utc(2020, 1, 1),
  lastDay: DateTime.utc(2030, 12, 31),
)

단 3줄만으로 기본 캘린더가 나타난다. 기본적으로 현재 날짜가 포커스되며 월 단위로 전환된다.


📌 날짜 선택 기능 추가

DateTime _focusedDay = DateTime.now();
DateTime? _selectedDay;

TableCalendar(
  focusedDay: _focusedDay,
  firstDay: DateTime.utc(2020, 1, 1),
  lastDay: DateTime.utc(2030, 12, 31),
  selectedDayPredicate: (day) {
    return isSameDay(_selectedDay, day);
  },
  onDaySelected: (selectedDay, focusedDay) {
    setState(() {
      _selectedDay = selectedDay;
      _focusedDay = focusedDay;
    });
  },
)

선택한 날짜는 selectedDayPredicate를 통해 표시되고, 클릭 시 상태가 갱신된다.


🎨 스타일 커스터마이징

calendarStyle: CalendarStyle(
  todayDecoration: BoxDecoration(
    color: Colors.orange,
    shape: BoxShape.circle,
  ),
  selectedDecoration: BoxDecoration(
    color: Colors.blueAccent,
    shape: BoxShape.circle,
  ),
  outsideDaysVisible: false,
),

기본 테마에서 벗어나 오늘 날짜, 선택 날짜를 강조하거나 요일/주말 텍스트 색상을 바꾸는 것도 가능하다.


📅 월 단위 전환 및 헤더 설정

headerStyle: HeaderStyle(
  formatButtonVisible: false,
  titleCentered: true,
  titleTextStyle: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
  leftChevronIcon: Icon(Icons.arrow_back_ios, size: 16),
  rightChevronIcon: Icon(Icons.arrow_forward_ios, size: 16),
),

헤더 부분은 월 제목 커스터마이징, 화살표 아이콘 설정 등으로 꾸밀 수 있다.


📌 참고: 이벤트 연결을 위한 준비

향후 특정 날짜에 메모나 일정 등을 보여주기 위해선 이벤트 데이터를 Map<DateTime, List<Event>> 구조로 관리하게 된다.

// 이후 글에서 자세히 다룰 예정
final Map<DateTime, List<String>> events = {
  DateTime(2024, 10, 1): ['회의', '과제 제출'],
};

🧘 마무리하며

캘린더는 단순한 UI를 넘어 사용자의 시간을 관리하는 중요한 도구다.
Flutter에서 table_calendar를 활용하면 감각적인 일정 관리 UI를 빠르게 만들 수 있다.

시간을 담는 앱, 지금부터 시작해보자.

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

728x90
반응형

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

할 일 완료 체크 및 삭제 기능 추가  (2) 2025.06.03
이벤트 알림 기능 — Flutter Local Notification 활용하기  (0) 2025.06.02
오늘 날짜 강조 및 마커 표시 기능 구현하기  (1) 2025.06.01
주간/월간 보기 전환 — 다양한 뷰 모드 지원하기  (0) 2025.05.31
이벤트 등록 기능 만들기 — 날짜에 할 일 연결하기  (0) 2025.05.30
'Flutter/Flutter 캘린더 앱 만들기' 카테고리의 다른 글
  • 이벤트 알림 기능 — Flutter Local Notification 활용하기
  • 오늘 날짜 강조 및 마커 표시 기능 구현하기
  • 주간/월간 보기 전환 — 다양한 뷰 모드 지원하기
  • 이벤트 등록 기능 만들기 — 날짜에 할 일 연결하기
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails N
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
Flutter 캘린더 UI 구현 — table_calendar 패키지로 시작하기
상단으로

티스토리툴바