개발 이야기/개발 및 서비스

Flutter 로 앱 개발 및 릴리즈 - 04. Calendar 페이지

가온아 2025. 5. 12. 09:00

2025.05.05 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 00. 마음의 준비

2025.05.05 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 01. 생성 및 시뮬레이터 테스트

2025.05.06 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 02. 폴더 구조 정리

2025.05.07 - [개발 이야기/개발 및 서비스] - Flutter 로 앱 개발 및 릴리즈 - 03. Flutter Compoent와 Native Component

오늘은 캘린터 탭 페이지를 만들어 보겠습니다.

우선 calendar 탭 페이지만을 위한 lib/calendar_page.dart 파일을 생성하고 다음 코드를 추가합니다. 

import 'package:flutter/material.dart';

class CalendarPage extends StatelessWidget {
  const CalendarPage({super.key});

  @override
  Widget build(BuildContext context) {
    return const Center(
      child: Text('Calendar Page'),
    );
  }
}

아직은 캘린터 컴포넌트를 추가하지 않고 별도 파일로 분리만 합니다. 그리고 기존 lib/navi_bar.dart 파일을 아래와 같이 수정/추가합니다.

.
.
import 'calendar_page.dart';
.
.

  final List<Widget> _pages = <Widget>[
    const CalendarPage(),   // import 한 페이지 함수로 연결합니다.
    const Center(child: Text('Project')),
    const Center(child: Text('Setting')),
  ];
.
.
.

이제 페이지 탭을 누르면 lib/calendar_page.dart의 코드가 연결되는걸 확인 할 수 있습니다.

이제 캘린터를 위한 코드 작업 준비가 되었습니다. 이제 캘릭터 컴포넌트를 추가해 보겠습니다.

Gemin에게 요청:  calendar_page.dart 파일을 생성하고 텍스트가 아닌 실제 캘린터 컴포넌트를 출력하는 코드를 작성해줘.

Gemini가 추천한 여러 calender  컴포넌트 중 https://pub.dev/packages/syncfusion_flutter_calendar 가 가장 깔끔하고 많은 기능을 지원하는 것 같습니다. (확장 컴포넌트를 활용할 때는 다음과 같은 순서로 적용해 사용할 수 있으니 참고하세요.)

/pubspec.yaml 파일에서 dep 항목을 찾아 아래와 같이 내용을 추가합니다.

.
.
dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^1.0.8
  syncfusion_flutter_calendar: ^29.1.41 # 캘리더 컴포넌트 추가
  .
  .

해당 컴포넌트를 설치하는 방법은 여러가지가 있네요. 일단 pubspec.yaml을 한번에 설정할 때는 VSCode > Flutter > Flutter pub get을 실행하면 모든 컴포넌트를 설치합니다.

혹은 > Flutter pub add 를 선택하면 하나의 컴포넌트만 추가할 수 있습니다.

참고로 콘솔에서 커멘드로도 가능합니다. 

이제 calendar_page.dart를 아래와 같이 수정합니다. 

import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';

class CalendarPage extends StatelessWidget {
  const CalendarPage({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold( // Scaffold를 사용하여 페이지 구조를 만듭니다.
      appBar: AppBar(
        title: const Text('Calendar'), // 페이지 상단에 앱 바를 추가합니다.
      ),
      body: SfCalendar( // SfCalendar 위젯을 사용하여 캘린더를 표시합니다.
        view: CalendarView.month, // 월 뷰로 표시합니다. (다른 뷰로 변경 가능)
      ),
    );
  }
}

그리고 실행하면 다음과 같은 화면을 확인할 수 있습니다.

iphone, web에서도 깔끔하게 작동하네요.

syncfusion_flutter_calendar 는 여러 기능이 있지만 실제 데이터를 연동하면서 하나 하나 익혀가 보겠습니다.

다음은 프로젝트 페이지를 만들어 보겠습니다. 바이!!

반응형