다크 모드 캘린더 디자인 적용

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

Flutter 앱에서 다크 모드는 이제 ‘선택’이 아닌 ‘기본’이 되었다.
특히 일정을 자주 확인하는 캘린더 앱에서는 어두운 환경에서도 눈이 편안해야 한다.

이번 글에서는 Flutter에서 다크 모드를 적용하고, table_calendar 위젯도 어두운 테마에 자연스럽게 녹아들게 만드는 방법을 알아보자.


🌙 테마 구성 기본

MaterialApp에서 라이트/다크 테마를 모두 정의하고, themeMode로 제어한다.

MaterialApp(
  theme: ThemeData(
    brightness: Brightness.light,
    scaffoldBackgroundColor: Colors.white,
    primarySwatch: Colors.indigo,
  ),
  darkTheme: ThemeData(
    brightness: Brightness.dark,
    scaffoldBackgroundColor: Color(0xFF121212),
    cardColor: Color(0xFF1E1E1E),
    primarySwatch: Colors.deepPurple,
  ),
  themeMode: ThemeMode.system,
)

system으로 지정하면 사용자의 OS 설정을 자동 반영한다.


🗓️ table_calendar 테마 반영하기

table_calendar는 내부적으로 테마를 상속받기 때문에, 전역 Theme 설정만 잘해도 대부분 어울린다.
하지만 일부 색상은 직접 지정해주는 게 좋다.

calendarStyle: CalendarStyle(
  todayDecoration: BoxDecoration(
    color: Theme.of(context).colorScheme.secondary,
    shape: BoxShape.circle,
  ),
  weekendTextStyle: TextStyle(
    color: Theme.of(context).brightness == Brightness.dark
      ? Colors.grey[300]
      : Colors.red,
  ),
  defaultTextStyle: TextStyle(
    color: Theme.of(context).brightness == Brightness.dark
      ? Colors.white
      : Colors.black,
  ),
)

TextStyle이나 BoxDecoration의 색상도 brightness 조건으로 처리하면 자연스럽다.


🌗 테마 전환 버튼 만들기

bool isDark = Theme.of(context).brightness == Brightness.dark;

IconButton(
  icon: Icon(isDark ? Icons.light_mode : Icons.dark_mode),
  onPressed: () {
    setState(() {
      themeMode = isDark ? ThemeMode.light : ThemeMode.dark;
    });
  },
)

사용자가 직접 테마를 전환할 수 있는 컨트롤을 제공하면 UX가 좋아진다.


📌 다크 모드 디자인 팁

  • 텍스트 대비 충분히 확보 (80% 이상)
  • 카드나 날짜 칸 배경: 완전 검정 대신 약간의 회색 계열 추천
  • 오늘 날짜 강조 색상은 어두운 배경에서도 잘 보이는 색 사용
  • 달력 외 위젯도 일관된 색상 테마 적용 필요

🧘 마무리하며

눈이 편안한 UI는 기능보다 더 중요한 사용자 배려다.
Flutter의 다크 모드 기능과 table_calendar 위젯을 활용해, 밤에도 보기 좋은 캘린더를 만들어보자.

빛을 줄여야 더 선명하게 보이는 정보도 있다.

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

728x90
반응형

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

사용자 맞춤 컬러 태그 시스템 구현  (0) 2025.06.07
서버와 동기화 — Google Calendar API 연동하기  (0) 2025.06.06
이벤트 반복 설정 구현 — 매주, 매달 반복 어떻게 할까?  (0) 2025.06.04
할 일 완료 체크 및 삭제 기능 추가  (2) 2025.06.03
이벤트 알림 기능 — Flutter Local Notification 활용하기  (0) 2025.06.02
'Flutter/Flutter 캘린더 앱 만들기' 카테고리의 다른 글
  • 사용자 맞춤 컬러 태그 시스템 구현
  • 서버와 동기화 — Google Calendar API 연동하기
  • 이벤트 반복 설정 구현 — 매주, 매달 반복 어떻게 할까?
  • 할 일 완료 체크 및 삭제 기능 추가
코드를 걷는 사람
코드를 걷는 사람
devwanderer 님의 블로그 입니다.
  • 코드를 걷는 사람
    터미널 밖으로 나온 개발자
    코드를 걷는 사람
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Flutter
        • Flutter 게시판 앱 만들기
        • Flutter 뉴스 앱 만들기
        • Flutter 메모 앱 만들기
        • Flutter 캘린더 앱 만들기
        • Flutter 날씨 앱 만들기
      • Next.js
      • Ruby On Rails
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
코드를 걷는 사람
다크 모드 캘린더 디자인 적용
상단으로

티스토리툴바