Orientação gerada a partir de informações públicas. Apenas para referência.
O pacote device_calendar é um plugin cross-platform do Flutter que permite que aplicativos interajam com os calendários do dispositivo do usuário no Android e no iOS. Ele permite ler, criar, atualizar e excluir eventos e calendários diretamente do sistema nativo de calendários do dispositivo. Projetado para integração perfeita, oferece uma API consistente entre plataformas, respeitando comportamentos e permissões específicas de cada plataforma. Isso o torna ideal para aplicativos de produtividade, agendamento e lembretes que exigem acesso direto ao calendário.
Casos de uso
Agendamento de consultas
Criando lembretes de evento
Sincronização com calendários do dispositivo
Gerenciar eventos do calendário
Criando aplicativos de gerenciamento de tarefas
Principais recursos
Compatibilidade multiplataforma
Integração com calendário nativo
Criação e exclusão de eventos
Gerenciamento de permissão de calendário
Suporte a comportamento específico de plataforma
Indicado para
Aplicativos de produtividade
Lembretes baseados em calendário
Ferramentas de gerenciamento de tarefas
software de planejamento de eventos
Aplicativos que exigem sincronização de calendário
Considerações
Requer permissão do usuário em ambas as plataformas
Limitado a sistemas de calendário nativos
Pode variar no comportamento entre Android e iOS
Sem suporte para web ou desktop
Depende da disponibilidade do calendário do dispositivo
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
Device Calendar Plugin
A cross platform plugin for modifying calendars on the user's device.
Breaking changes at v4
If you're upgrading from previous versions, your code will need to be modified (slightly), otherwise it will not run after update. See Timezone support for more details.
There are some changes to event JSON formats at v4. Pay extra care if you handle event JSONs. Directly calling to and from device calendars should be unaffected.
Features
Request permissions to modify calendars on the user's device
Check if permissions to modify the calendars on the user's device have been granted
Add or retrieve calendars on the user's device
Retrieve events associated with a calendar
Add, update or delete events from a calendar
Set up, edit or delete recurring events
NOTE: Editing a recurring event will currently edit all instances of it
NOTE: Deleting multiple instances in Android takes time to update, you'll see the changes after a few seconds
Add, modify or remove attendees and receive if an attendee is an organiser for an event
Setup reminders for an event
Specify a time zone for event start and end date
NOTE: Due to a limitation of iOS API, single time zone property is used for iOS (event.startTimeZone)
NOTE: For the time zone list, please refer to the TZ database name column on Wikipedia
Timezone support with TZDateTime
Due to feedback we received, starting from 4.0.0 we will be using the timezone package to better handle all timezone data.
This is already included in this package. However, you need to add this line whenever the package is needed.
import'package:timezone/timezone.dart';
If you don't need any timezone specific features in your app, you may use flutter_native_timezone to get your devices' current timezone, then convert your previous DateTime with it.
import'package:flutter_native_timezone/flutter_native_timezone.dart';
initializeTimeZones();
// As an example, our default timezone is UTC.Location _currentLocation = getLocation('Etc/UTC');
FuturesetCurentLocation() async {
String timezone = 'Etc/UTC';
try {
timezone = awaitFlutterNativeTimezone.getLocalTimezone();
} catch (e) {
print('Could not get the local timezone');
}
_currentLocation = getLocation(timezone);
setLocalLocation(_currentLocation);
}
...
event.start = TZDateTime.from(oldDateTime, _currentLocation);
For other use cases, feedback or future developments on the feature, feel free to open a discussion on GitHub.
Null-safety migration
From v3.9.0, device_calendar is null-safe. However, not all workflows have been checked and bugs from older versions still persist.
You are strongly advised to test your workflow with the new package before shipping.
Better yet, please leave a note for what works and what doesn't, or contribute some bug fixes!
Android Integration
The following will need to be added to the AndroidManifest.xml file for your application to indicate permissions to modify calendars are needed
NOTE: From v4.3.2 developers no longer need to add proguard rule in their app.
By default, all android apps go through R8 for file shrinking when building a release version. Currently, it interferes with some functions such as retrieveCalendars().
You may add the following setting to the ProGuard rules file proguard-rules.pro (thanks to Britannio Jarrett). Read more about the issue here
Since v.1.0, this version has migrated to use AndroidX instead of the deprecated Android support libraries. When using 0.10.0 and onwards for this plugin, please ensure your application has been migrated following the guide here
iOS Integration
For iOS 10+ support, you'll need to modify the Info.plist to add the following key/value pair
<key>NSCalendarsUsageDescription</key><string>Access most functions for calendar viewing and editing.</string><key>NSContactsUsageDescription</key><string>Access contacts for event attendee editing.</string>
For iOS 17+ support, add the following key/value pair as well.
<key>NSCalendarsFullAccessUsageDescription</key><string>Access most functions for calendar viewing and editing.</string>
Note that on iOS, this is a Swift plugin. There is a known issue being tracked here by the Flutter team, where adding a plugin developed in Swift to an Objective-C project causes problems. If you run into such issues, please look at the suggested workarounds there.