안드로이드 및 iOS 기기에서 캘린더 이벤트를 원활하게 관리할 수 있는 플러터 플러그인입니다. 사용자는 사용자 정의 알림과 함께 이벤트를 추가, 편집 및 삭제할 수 있습니다. 패키지는 앱에 캘린더 기능을 통합하기 위한 간단한 API를 제공하여 스케줄링, 작업 관리 또는 알림 기반 애플리케이션에 적합합니다. 두 플랫폼 모두 지원하며 신뢰할 수 있는 성능을 위해 네이티브 캘린더 API를 활용합니다.
사용 사례
예약 일정 조정
작업 알림 만들기
이벤트 기획 앱 만들기
생산성 도구와의 통합
반복 이벤트 관리
주요 기능
캘린더 이벤트 추가, 편집 및 삭제
이벤트 알림 지원
크로스 플랫폼(안드로이드 및 iOS)
간단하고 직관적인 API
네이티브 캘린더 통합
적합한 대상
생산성 앱
예약 스케줄러
작업 관리 도구
기억상기 기반 애플리케이션
이벤트 기반 워크플로우
고려 사항
캘린더에 액세스하려면 사용자 권한이 필요합니다
Android 및 iOS 플랫폼에만 제한됨
플랫폼별 오류 사례를 처리해야 할 수 있습니다
권한은 런타임 시에 요청해야 합니다
이벤트 데이터는 플랫폼 간에 약간 다를 수 있습니다
원본 README
연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
manage_calendar_events
A Flutter plugin for reading, creating, updating, and deleting device calendar events — with reminders and attendees — on Android and iOS.
Platform support
Android
iOS
✓
✓
Features
List all calendars available on the device, including whether each one is read-only or local
Create and delete local (non-synced) calendars
Read events from a calendar — all events, a date range, or a whole week/month
Create and update events: title, description, location, URL, all-day flag, and a reminder
Delete events
Add, update, and delete reminders on an existing event
Add, list, and remove attendees on an event
Getting started
1. Add the dependency
dependencies:manage_calendar_events:^2.1.2
2. Android setup
Add the calendar permissions to android/app/src/main/AndroidManifest.xml:
Add the calendar usage description(s) to ios/Runner/Info.plist:
<key>NSCalendarsUsageDescription</key><string>This app needs calendar access to manage your events.</string><key>NSCalendarsFullAccessUsageDescription</key><string>This app needs calendar access to manage your events.</string>
NSCalendarsFullAccessUsageDescription is required on iOS 17+; NSCalendarsUsageDescription covers earlier versions.
Usage
import'package:manage_calendar_events/manage_calendar_events.dart';
final _calendarPlugin = CalendarPlugin();
Request permissions
final granted = await _calendarPlugin.hasPermissions() ?? false;
if (!granted) {
await _calendarPlugin.requestPermissions();
}
List calendars
final calendars = await _calendarPlugin.getCalendars();
final calendar = calendars!.first;
Create or delete a local calendar
final calendarId = await _calendarPlugin.createCalendar(
calendarName: 'My App Calendar',
color: Colors.blue,
);
// Only ever succeeds for a calendar created this way - it can't delete a// user's real synced Google/iCloud calendar.await _calendarPlugin.deleteCalendar(calendarId: calendarId!);
Read events
// Every event on a calendarfinal events = await _calendarPlugin.getEvents(calendarId: calendar.id!);
// Events in an explicit date rangefinal events = await _calendarPlugin.getEventsByDateRange(
calendarId: calendar.id!,
startDate: DateTime.now(),
endDate: DateTime.now().add(constDuration(days: 30)),
);
// Shortcuts for the current week / monthfinal weekEvents = await _calendarPlugin.getEventsByWeek(
calendarId: calendar.id!,
findDate: DateTime.now(),
);
final monthEvents = await _calendarPlugin.getEventsByMonth(
calendarId: calendar.id!,
findDate: DateTime.now(),
);
Create an event
final event = CalendarEvent(
title: 'Team standup',
description: 'Daily sync',
startDate: DateTime.now(),
endDate: DateTime.now().add(constDuration(hours: 1)),
reminder: Reminder(minutes: 15), // remind 15 minutes before the event
);
final eventId = await _calendarPlugin.createEvent(
calendarId: calendar.id!,
event: event,
);